![](/img/trans.png)
[英]How to call Python code (including third-party modules imported) from C++?
[英]Trouble including third-party code in my C++ application
我正在尝试将一些网络代码包含到我的C ++应用程序中。 我下载了CSimpleSocket并将所有.h和.cpp文件复制到我的主文件所在的目录中。 然后我尝试包含其中一个标题,但是链接器只是阻止了一堆错误,例如:
和别的。 一切都在一个目录中,所以我认为这不是问题所在。 我用来包含的代码是#include "PassiveSocket.h"
。 我正在使用Dev-C ++,如果这有任何区别的话。 我不明白我做错了什么,所以如果有人能帮助我,那就太好了。
如果这是一个非常愚蠢的问题,请原谅我,但我正在努力学习C ++,这并不容易。 谢谢你的帮助。
您收到此错误的原因是您的编译器找不到与CSimpleSocket标头对应的二进制文件。 就好像你写的那样
void someFunction(int someArg);
然后从未提供someFunction的实现。
要使用第三方库,您需要两件事:
获得头文件和库文件后,需要将它们放在一个编译器可以找到它们的位置。 这个地方将根据您的操作系统,环境变量和编译器配置而有所不同。
现在它们在某个地方,编译器可以找到它们,你需要告诉编译器使用它们。 头文件与#include命令一起使用,库文件通过向编译器提供参数来链接。
在幕后,Dev-C ++使用MinGW GNU GCC编译器,它调用类似于g++ file1.cpp file2.cpp ... filen.cpp -o filename
,告诉程序g ++编译一个名为“filename”的C ++可执行文件文件1到n。 还有其他标志可以添加到g ++中,例如告诉它在哪里搜索以及链接什么。
编译时CSimpleSocket库的名称是“clsocket”,因此我们需要找到一种方法来配置Dev-C ++以将-lclsocket
添加到g++
命令中。 我不使用Dev-C ++,所以我不能帮助你,但你可能正在寻找“链接选项”或类似的编译配置。 您还需要确保.lib和.h文件位于搜索路径上,该路径也应该可以在Dev-C ++中进行配置。
CSimpleSocket还提供了一个安装程序,它应该自动创建.lib文件并将.lib和.h放在可以找到它们的位置,您应该考虑使用该安装程序。
我认为这个答案的复杂性凸显了C ++库集成生态系统的糟糕状态。 不幸的是,在编写本文时,C ++中没有“模块”的概念。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.