QuickFix C++-如何从客户端APP建立交易会话



我已经使用以下命令构建了具有SSL支持的快速修复C++源代码。我的快速修复库已成功生成。

在Linux(带有系统openssl(上,

cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo -DHAVE_SSL=ON -DCMAKE_INSTALL_PREFIX:PATH="install-path" .. make -j 4 install

这是我的启动器代码-

if (isSSL.compare("SSL") == 0)
initiator = new FIX::ThreadedSSLSocketInitiator ( application, storeFactory, settings, logFactory );
else
initiator = new FIX::SocketInitiator( application, storeFactory, settings, logFactory );

但在运行这个链接问题时。问题出在哪里?

CMakeFiles/TradingClient.dir/tradeclient.cpp.o: In function `main':
/mnt/d/TradingClient/tradeclient.cpp:47: undefined reference to `FIX::ThreadedSSLSocketInitiator::ThreadedSSLSocketInitiator(FIX::Application&, FIX::MessageStoreFactory&, FIX::SessionSettings const&, FIX::LogFactory&)'
collect2: error: ld returned 1 exit status

这是我的CMakeLists.txt

cmake_minimum_required(VERSION 3.0)
project(TradingClient)
add_definitions(-DHAVE_SSL=1)
set(CMAKE_CXX_STANDARD 14)
set(quickfix_lib "/usr/lib/libquickfix.so")
add_executable(TradingClient Application.h Application.cpp tradeclient.cpp)
target_link_libraries(TradingClient ${quickfix_lib} )

如果进入quickfix/src/C++/CMakeLists.txt

if (HAVE_SSL)
set (quickfix_SOURCES ${quickfix_SOURCES}
SSLSocketAcceptor.cpp
SSLSocketConnection.cpp
SSLSocketInitiator.cpp
ThreadedSSLSocketAcceptor.cpp
ThreadedSSLSocketConnection.cpp
ThreadedSSLSocketInitiator.cpp
UtilitySSL.cpp)
endif()

这些文件只能使用SSL进行构建。这意味着我的快速修复库是正确构建的,因为这些文件的对象文件已经生成。

尽管对象文件是作为库的一部分生成的,但仍然存在无法找到这些方法的引用的链接问题ThreadedSSLSocketInitiator((

但这与编译问题无关。它快速修复了源代码错误。我发现一个博客相关的,这个文件有丢失的条目

#cmakedefine HAVE_SSL 1

我在这个文件中添加了

cat cmake_config.h.in

#ifndef CONFIG_H_IN 
#define CONFIG_H_IN 
#cmakedefine HAVE_EMX 
#cmakedefine HAVE_CXX17 
#cmakedefine HAVE_STD_SHARED_PTR 
#cmakedefine HAVE_SHARED_PTR_IN_TR1_NAMESPACE 
#cmakedefine HAVE_STD_TR1_SHARED_PTR_FROM_TR1_MEMORY_HEADER 
#cmakedefine HAVE_STD_UNIQUE_PTR 
#cmakedefine HAVE_SSL 1
#endif 

最新更新