Пробую подключить статическую библиотеку логгера P7 к своему приложению. Собрал логгер с помощью cmake по инструкции в документации, т.е.
cd *p7_folder_path*
mkdir *_build_*
cd *_build_*
cmake ..
после сборки получил несколько проектов для MCVS, собрал с помощью нее либу, на выходе получил p7.lib, подключил ее к своему проекту через менеджер creator'а выбрал внешнюю, указал путь до либы оставил галочки только для винды. В pro файл дописал путь до хедеров. В итоге pro файл выглядит так:
TEMPLATE = app
CONFIG += console c++11
CONFIG -= app_bundle
CONFIG -= qt
win32:CONFIG(release, debug|release): LIBS += -L$$PWD/../../logger/_build_/Sources/release/ -lp7
else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/../../logger/_build_/Sources/debug/ -lp7
INCLUDEPATH += $$PWD/../../logger/_build_/Sources/Debug
DEPENDPATH += $$PWD/../../logger/_build_/Sources/Debug
win32-g++:CONFIG(release, debug|release): PRE_TARGETDEPS += $$PWD/../../logger/_build_/Sources/release/libp7.a
else:win32-g++:CONFIG(debug, debug|release): PRE_TARGETDEPS += $$PWD/../../logger/_build_/Sources/debug/libp7.a
else:win32:!win32-g++:CONFIG(release, debug|release): PRE_TARGETDEPS += $$PWD/../../logger/_build_/Sources/release/p7.lib
else:win32:!win32-g++:CONFIG(debug, debug|release): PRE_TARGETDEPS += $$PWD/../../logger/_build_/Sources/debug/p7.lib
SOURCES += \
main.cpp
INCLUDEPATH += D:/Example/logger/Headers
Так выглядит main.cpp
#include <iostream>
#include "GTypes.h"
#include "P7_Client.h"
#include "P7_Trace.h"
using namespace std;
int main()
{
IP7_Client* l_pClient = P7_Create_Client( TM( "/P7.Sink=FileTxt" ) );
if ( l_pClient == NULL ) {
cout << "Error IP7_Client" << endl;
}
IP7_Trace* l_pTrace = P7_Create_Trace( l_pClient, TM( "Test" ) );
l_pTrace->P7_WARNING( 0, TM( "Test" ) );
l_pClient->Release();
return 0;
}
IDE по идее все видит и не на что не ругается.
Но при сборке сыпятся пару десятков ошибок типа:
p7.lib(ClBaical.obj):-1: ошибка: LNK2019: ссылка на неразрешенный внешний символ __WSAFDIsSet в функции "public: enum eSocket_Status __cdecl CUDP_Socket::Is_Ready(enum eFD_Type,unsigned int)" (?Is_Ready@CUDP_Socket@@QEAA?AW4eSocket_Status@@W4eFD_Type@@I@Z).
p7.lib(ClText.obj):-1: ошибка: LNK2001: неразрешенный внешний символ __imp_bind.
Все ошибки относятся к линковке, т.е. либо LNK2001 либо LNK2019.
Собираю либу в первый раз и возможно что то очевидное пропускаю, что не указано в документации, т.к. автором это считается очевидным.