Код: Выделить всё
IBKR-BOT/
CMakeLists.txt
IBKR-BOT.cpp
IBKR-BOT.h
Dashboard/
CMakeLists.txt
Dashboard.cpp
Dashboard.h
Libraries/
CMakeLists.txt
libbid.lib
TWSClient/
CMakeLists.txt
TWSClient.cpp
TWSClient.h
- IBKR-BOT: Основной исполняемый файл и проект. Это зависит от подпроектов Dashboard и TWSClient.
- Панель мониторинга: отображает торговлю. информация (в настоящее время показывает фальшивую эволюцию запасов).
- Библиотеки: Содержит внешние библиотеки (в настоящее время только libbid.lib). , десятичная математика Intel с плавающей запятой Library).
- TWSClient: оболочка для управления вызовами TWS API. В настоящее время поддерживаются только базовые функции, такие как проверка связи и вход в систему.
Проекты Dashboard и IBKR-BOT хороши, поэтому я не предоставил здесь их файлы CmakeLists и CPP. Моя основная проблема связана с TWSClient. Но помните, что каждый подпроект (панель управления и TWSclient связаны с IBKR-BOT, поскольку это основной проект и исполняемый файл)
Я успешно включил исходный код TWS API в CMakeLists.txt< /code> проекта TWSClient, и методы TWS API распознаются. Однако мне не удается правильно связать libbid.lib, который необходим для работы TWS API.
Я получаю несколько экземпляров этой ошибки (для разные функции из libbid):
Код: Выделить всё
LNK2019 unresolved external symbol __bid64_add referenced in function "public: static unsigned __int64 __cdecl DecimalFunctions::add(unsigned __int64,unsigned __int64)" (?add@DecimalFunctions@@SA_K_K0@Z)
< /code>
Cmake Configuration для twsclient < /h2>
# Set path to TWS API source directory
set(TWSAPI_SOURCE_DIR "C:/TWS API/source/CppClient/client")
# Include TWS API headers
include_directories(${TWSAPI_SOURCE_DIR})
# Gather all TWS API source files
file(GLOB TWSAPI_SOURCES "${TWSAPI_SOURCE_DIR}/*.cpp")
# Create TWSAPI static library
add_library(TWSAPI STATIC ${TWSAPI_SOURCES})
# Link libbid.lib to TWSAPI
target_link_libraries(TWSAPI PRIVATE ${CMAKE_SOURCE_DIR}/Libraries/libbid.lib)
# Create TWSClient static library
add_library(TWSClient STATIC TWSClient.cpp)
# Ensure TWSClient sees TWSAPI headers and libraries
target_include_directories(TWSClient PUBLIC ${TWSAPI_SOURCE_DIR})
target_link_libraries(TWSClient PRIVATE TWSAPI)
< /code>
код Twsclient, который не удается < /h2>
Я включаю только важную часть кода, на самом деле не так много. Вот где появляется BuilderRor. < /P>
unresolved external symbol __bid64_add referenced in function.....
Код: Выделить всё
#pragma once
#ifndef TWSCLIENT_H
#define TWSCLIENT_H
#include
#include
#include
class TWSClient : public EWrapper {
// Member for the client socket
EReaderOSSignal m_osSignal;
EClientSocket* const m_pClient;
public:
TWSClient();
< /code>
cpp < /h3>
#include "TWSClient.h"
#include
#include
TWSClient::TWSClient() :
m_osSignal(2000)//2-seconds timeout
, m_pClient(new EClientSocket(this, &m_osSignal))
{
}
// Connect to IBKR Gateway or TWS
bool TWSClient::connect(const std::string& host, int port, int clientId) {
if (m_pClient->eConnect(host.c_str(), port, clientId)) {
std::cout
Подробнее здесь: [url]https://stackoverflow.com/questions/79390078/cmake-with-vcpkg-including-libbid-lib-intel-math-lib-as-dependency-for-exter[/url]