我正在使用IDE CodeBlocks,并希望在我的代码中使用一个名为Chilkat的第三方库。我可以让编译器读取头,但当我尝试使用库中的某个方法或对象时,代码不会编译。
代码:
#include <iostream>
#include <CkSpider.h>
using namespace std;
int main(){
CkSpider m;
m.Initialize("www.chilkatsoft.com");
cout<<"Works"<<endl;
return 0;
}
所有错误都像:
..libchilkat-9.5.0.a(ChilkatSocket.o):ChilkatSocket.cpp|| undefined reference to `__imp_WSAStartup'|
..libchilkat-9.5.0.a(ChilkatSocket.o):ChilkatSocket.cpp|| undefined reference to `__imp_getsockopt'|
..libchilkat-9.5.0.a(ChilkatSocket.o):ChilkatSocket.cpp|| undefined reference to `__imp_setsockopt'|
除此之外,图书馆网页上还有一些关于如何链接和编译图书馆的说明(https://www.chilkatsoft.com/downloads_mingw.asp#getStarted),但我不知道在哪里或如何使用这些参数:
链接时可能需要-Wl、--enable自动导入选项。此外,链接到libcrypt32.a、libws2_32.a和libdnsapi.a,如下所示:
g++ -Wl,--enable-auto-import linkSample.cpp -o"linkSample.exe" -L. -lchilkat-9.5.0
-L/MinGW/lib -lcrypt32 -lws2_32 -ldnsapi
我如何以及在哪里使用这些参数,以便在CodeBlocks上链接和编译这个库?
PS:对不起的英文错误
问题是链接错误,而不是"编译";错误你的代码编译得很好——链接器就是找不到一个依赖库。
问题不在于";chilkat";依赖关系是";WSAStartup"getsockopt"以及";setsockopt";。这些都在Microsoft Winsock库中。您需要在构建命令中包含-l ws2_32
。