Gsoap -编译使用- crypt

gsoap - compile using -lcrypt

本文关键字:crypt 编译 Gsoap      更新时间:2023-10-16

我在ubuntu下c++代码工作。我正在使用gsoap来连接到服务器。我已经得到了所有必需的资料。我还成功地连接到服务器。不过我还是有个问题。为什么我需要在命令行中写:g++ testrongerver.cpp -o testServ libgsoap++.a。为什么我需要包含libgsoap++。如果我在我的文件夹中包含了所有的依赖项?编辑:

如果我不包含libgsoap++。A在命令行中我有:

undefined reference to `soap_embed'
/tmp/ccyeN0df.o: In function `soap_serialize_string(soap*, char* const*)':
TEST.cpp:(.text+0xb9de): undefined reference to `soap_reference'
/tmp/ccyeN0df.o: In function `soap_out_string(soap*, char const*, int, char* const*, char const*)':
TEST.cpp:(.text+0xba15): undefined reference to `soap_outstring'
/tmp/ccyeN0df.o: In function `soap_in_string(soap*, char const*, char**, char const*)':

您需要告诉g++您想要使用-lgsoap++链接libgsoap++。

如果你想链接到libgsop++的非系统范围版本,你需要通过-L标志指定libgsop++的库路径。

简短说明:

链接时间错误。编译是成功的,并产生了目标文件。在编译期间,您"承诺"(通过包含gsoap包含文件)soap_serialize_string等存在于某个地方,并且目标代码是可用的。

现在链接器尝试从该目标文件生成可执行文件。它检查对象文件中的所有"承诺",并尝试解决它:用调用实际函数代替它。这些"实际功能"存在于哪里?在您的示例中,它是libgsoap++.a.

所以如果你没有告诉链接器链接libgsoap++。第一,承诺只是承诺,你有未定义的引用。