gsoap - 使用-lcrypt编译

时间:2011-09-07 12:44:23

标签: c++ ubuntu gsoap

我在c ++代码下使用ubuntu。我正在使用gsoap来连接服务器。我已经获得了所有必要的数据。我也成功连接到服务器。我还有一个问题。为什么我需要在命令行中编写:g ++ test_server.cpp -o testServ libgsoap ++。为什么我需要在命令行中包含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*)':

1 个答案:

答案 0 :(得分:1)

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

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

简短说明:

您有链接时错误。编译成功并生成了目标文件。在编译期间,您“承诺”(通过包含gsoap包含文件)soap_serialize_string等存在于某处,并且目标代码可用。

现在链接器尝试从该对象文件生成可执行文件。它检查目标文件中的所有“promises”并尝试解析它:将其替换为调用实际函数。这个“实际功能”存在于何处?在你的情况下,它是libgsoap ++。a。

因此,如果你没有告诉链接器链接libgsoap ++。a,promises只保留promises,你有未定义的引用。