首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在VC++ MFC应用程序中用QuickFIX实现

在VC++ MFC应用程序中用QuickFIX实现
EN

Stack Overflow用户
提问于 2019-02-14 10:30:59
回答 1查看 204关注 0票数 0

我使用的是VC++ MFC 64位应用程序的quickfix,它工作得很好.现在我想使用ThreadedSSLSocketAcceptor,我已经完成了以下操作:

  1. 下载预编译openssl-1.0.2l-vs2015.7z md51
  2. 添加了所有必需的openssl 64位头文件。
  3. 定义HAVE_SSL 1
  4. 将openssl 64位库链接到应用程序ssleay32MDd.lib,libeay32MDd.

不过,我仍然收到以下链接错误:

代码语言:javascript
复制
Severity    Code    Description Project File    Line    Suppression State
Error   LNK2028 unresolved token (0A0026BF) "public: __cdecl FIX::SSLSocketAcceptor::SSLSocketAcceptor(class FIX::Application &,class FIX::MessageStoreFactory &,class FIX::SessionSettings const &,class FIX::LogFactory &)" (??0SSLSocketAcceptor@FIX@@$$FQEAA@AEAVApplication@1@AEAVMessageStoreFactory@1@AEBVSessionSettings@1@AEAVLogFactory@1@@Z) referenced in function "int __cdecl StartExecutor(void *)" (?StartExecutor@@$$FYAHPEAX@Z)   OFI_FIX_Executor    D:\FIX\RRM_FIX\FIX_RRM(final)\FIXServer\OFI_FIX_Executor\OFI_FIX_Executor\OFI_FIX_ExecutorDlg.obj   1   

Severity    Code    Description Project File    Line    Suppression State
Error   LNK2028 unresolved token (0A0026C0) "public: __cdecl FIX::ThreadedSSLSocketAcceptor::ThreadedSSLSocketAcceptor(class FIX::Application &,class FIX::MessageStoreFactory &,class FIX::SessionSettings const &,class FIX::LogFactory &)" (??0ThreadedSSLSocketAcceptor@FIX@@$$FQEAA@AEAVApplication@1@AEAVMessageStoreFactory@1@AEBVSessionSettings@1@AEAVLogFactory@1@@Z) referenced in function "int __cdecl StartExecutor(void *)" (?StartExecutor@@$$FYAHPEAX@Z)   OFI_FIX_Executor    D:\FIX\RRM_FIX\FIX_RRM(final)\FIXServer\OFI_FIX_Executor\OFI_FIX_Executor\OFI_FIX_ExecutorDlg.obj   1   

Severity    Code    Description Project File    Line    Suppression State
Error   LNK2019 unresolved external symbol "public: __cdecl FIX::ThreadedSSLSocketAcceptor::ThreadedSSLSocketAcceptor(class FIX::Application &,class FIX::MessageStoreFactory &,class FIX::SessionSettings const &,class FIX::LogFactory &)" (??0ThreadedSSLSocketAcceptor@FIX@@$$FQEAA@AEAVApplication@1@AEAVMessageStoreFactory@1@AEBVSessionSettings@1@AEAVLogFactory@1@@Z) referenced in function "int __cdecl StartExecutor(void *)" (?StartExecutor@@$$FYAHPEAX@Z)    OFI_FIX_Executor    D:\FIX\RRM_FIX\FIX_RRM(final)\FIXServer\OFI_FIX_Executor\OFI_FIX_Executor\OFI_FIX_ExecutorDlg.obj   1   


Severity    Code    Description Project File    Line    Suppression State
Error   LNK2019 unresolved external symbol "public: __cdecl FIX::SSLSocketAcceptor::SSLSocketAcceptor(class FIX::Application &,class FIX::MessageStoreFactory &,class FIX::SessionSettings const &,class FIX::LogFactory &)" (??0SSLSocketAcceptor@FIX@@$$FQEAA@AEAVApplication@1@AEAVMessageStoreFactory@1@AEBVSessionSettings@1@AEAVLogFactory@1@@Z) referenced in function "int __cdecl StartExecutor(void *)" (?StartExecutor@@$$FYAHPEAX@Z)    OFI_FIX_Executor    D:\FIX\RRM_FIX\FIX_RRM(final)\FIXServer\OFI_FIX_Executor\OFI_FIX_Executor\OFI_FIX_ExecutorDlg.obj   1

这需要任何附加的库或dll吗?

EN

回答 1

Stack Overflow用户

发布于 2019-02-14 11:45:39

您需要使用SSL重新构建quickfix:

  1. 取消#define HAVE_SSL 1中的src/config_windows.h
  2. 调用cmake -S . -DHAVE_SSL=1 (您可能需要首先将OPENSSL_ROOT_DIR env设置为OpenSSL路径,例如set OPENSSL_ROOT_DIR=C:\openssl-1.1.0f-vs2015\)。
  3. 调用msbuild quickfix.sln

然后,您应该能够构建一个示例应用程序(只需确保将src\C++\release\quickfix.lib添加到链接器设置中):

代码语言:javascript
复制
#define HAVE_SSL 1
#include <quickfix/SSLSocketAcceptor.h>

int main()
{
    FIX::NullApplication app{};
    FIX::MemoryStoreFactory factory{};
    FIX::SessionSettings settings{};
    FIX::SSLSocketAcceptor acceptor{ app, factory, settings };
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54688269

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档