Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/161.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
wsdlpull:与g++; 我对用C++编程C++很有新意,并且有很大的问题要解决 WSDL拉库< /代码>的工作。版本是1.24_C++_G++ - Fatal编程技术网

wsdlpull:与g++; 我对用C++编程C++很有新意,并且有很大的问题要解决 WSDL拉库< /代码>的工作。版本是1.24

wsdlpull:与g++; 我对用C++编程C++很有新意,并且有很大的问题要解决 WSDL拉库< /代码>的工作。版本是1.24,c++,g++,C++,G++,我按照以下步骤进行安装: 然后,我将print.cpp文件从示例复制到“prefix”-目录。下一步将是“在include路径中添加$(前缀)/include,并将$(前缀)/libs和-lwsdl-lschema-lxmlpull添加到LDFLAGS”。第一个问题是没有文件夹“libs”,只有“lib”,而include文件夹中有另一个名为wsdlpull的文件夹。因此,我输入了以下命令: g++ -I include/wsdlpull -L lib -lwsdl -lschema -lxml

我按照以下步骤进行安装:

然后,我将
print.cpp
文件从示例复制到“prefix”-目录。下一步将是“在include路径中添加
$(前缀)/include
,并将
$(前缀)/libs
-lwsdl-lschema-lxmlpull
添加到
LDFLAGS
”。第一个问题是没有文件夹“libs”,只有“lib”,而include文件夹中有另一个名为
wsdlpull
的文件夹。因此,我输入了以下命令:

g++ -I include/wsdlpull -L lib -lwsdl -lschema -lxmlpull -o print print.cpp
这导致了以下错误:

/usr/bin/ld:找不到-lwsdl
/usr/bin/ld:找不到-lschema
/usr/bin/ld:找不到-lxmlpull
collect2:错误:ld返回了1个退出状态


我不知道这意味着什么,为什么当我指向“lib”时它会出现在/usr/bin/ld中?

当您使用
-L lib
时,这意味着,
lib
dir在
pwd
中,您正在执行
make
操作。检查您是否说过
lib
确实可用

为了简化操作,您可以给出
lib
文件夹的绝对路径。 i、 e
-L/lib
。这将有助于
make
查看
lib
,而不会产生任何混乱

接下来,您可能希望明确指定
libwsdl
是静态库还是共享库。尽管这是可选的

或者,最好的解决方案是将库放置在系统libs位置,即
/lib或/usr/lib或/use/local/lib
并运行
ldconfig
,以便链接器/加载器知道新添加的库存在的位置。在这种情况下,您可以简单地发出
-lwsdl
,而无需指定
-L
标志


有关更多信息,请参阅。

我试图给出-L/lib,但它不起作用。我可能认为教程有问题,因为库命名约定不是这样的吗?例如,如果我有一个libwsdl.so文件,那么我会在命令中写入-lwsdl(删除前缀和后缀)?但是我没有那个文件,取而代之的是“libwsdlpull.so”等等。因此,我尝试了“g++-I include/wsdlpull-o print print.cpp-L/home/jesse/Dropbox/Programmering/C++/test/lib-lwsdlpull-lwsdlpullschema-lwsdlpullxml”,它可以编译,但不能运行(“加载共享库时出错:libwsdlpull.so.1”)。什么是
libwsdlpull.so
SONAME
?您可以使用objdump获取SONAME。objdump-p | grep sonameth libwsdlpull.so是libwsdlpull.so.1,它的SONAME也是libwsdlpull.so.1Hmm。ls-l
libwsdlpull.so的输出是什么?它是否指向
libwsdlpull.so.1
?加载/链接共享库时,链接器将始终看到SONAME。您的库名是
libwsdlpull.so
,而
SONAME
libwsdlpull.so.1
。因此问题就来了。
libwsdlpull.so
build中有一个错误。通常,库名称上会有版本控制信息,但在
SONAME
上不会有版本控制信息。您是否自己构建了
libwsdlpull.so.1
g++ -I include/wsdlpull -L lib -lwsdl -lschema -lxmlpull -o print print.cpp