将vmware web api客户端代码编译为可用对象的问题

时间:2011-05-15 17:58:31

标签: c++ vmware gsoap

我正在使用vmware的web application api,只是为了简单地检索“ServiceContent”对象中的字段。有一个例子说明如何在vmware forum找到它。包含在那里的例子对我编译很好,但是在运行简单示例时我得到段错误 - 特别是跟踪返回到soap_serializeheader()函数(我相信这些是在stdsoap2.cpp中定义的)。 我的问题是我不知道如何避免这种段错误,并且不知道为什么会发生这种情况(因为我几乎是逐字逐句地遵循这个例子)。我正在使用OS X工具链(gcc版本4.0.1(Apple Inc. build 5465))和(gsoap版本2.7.16)。我尝试了gsoap 2.8但得到了相同的结果。以下是我过去现在所处的程序。

这些是我用来解析wsdl的命令:

wsdl2h -o vim25.h vimService.wsdl

解析后,我使用以下命令编译:

soapcpp2 -x -C -pvsp vim25.h -I/place/where/stlvector.h/is

这会生成文件vspC.cpp,vspClient.cpp和vspVimBindingProxy.cpp。在内部,这些文件具有相同的函数前缀(即ns1 / ns2等),因此我的调用与示例中的调用相同。

这是我用来编译vspC.cpp和vspClient.cpp的命令:

g++ -DWITH_COOKIES -DWITH_OPENSSL -c vspC.cpp
g++ -DWITH_COOKIES -DWITH_OPENSSL -c vspClient.cpp

这是我用来编译stdsoap2.cpp的命令(如果我不使用-DWITH_NONAMESPACES编译,当我链接所有内容时,我得到一个关于未定义符号“_namepspaces”的错误):

g++ -DWITH_COOKIES -DWITH_OPENSSL -DWITH_NONAMESPACES -c stdsoap2.cpp

然后我将所有内容与测试代码链接在一起(再次从示例中复制几乎相同,只需更改以正确引用我创建的文件):

g++ -DWITH_COOKIES -DWITH_OPENSSL vspC.o vcpClient.o stdsoap2.o testcase.cpp -lssl -lcrypto -o doesntwork

这个编译正确,但当然无法运行。我读到了vmware forum post中遇到问题的OS X用户。 出现 gsoap guide表示您不能使用stdsoap2.cpp的标头和故障序列化代码,您必须单独编译它们。 OS X post中的用户似乎已经这样做了,但我不知道如何将它们合并到我的测试文件中(他创建了空的env.h文件然后用soap2cpp编译它) - 如果我包含envH .h文件我得到与vspH.h的命名冲突。 所以第二个问题是如何使用soap2cpp正确编译所有存根,以便没有命名空间冲突(这就是我似乎遇到的情况)。

我不会提供源,因为它显示在用户stumpr的第一个vwmare forum link。我不相信问题在源代码中,但在中我使用wsdl2h,soap2cpp或者在使用g ++进行编译时使用了一些错误的标志组合。

感谢您一看,希望有人可以解决此问题!

编辑我想我可能已经解决了这个问题 - 使用64位系统(以及一个内存更多的系统)。我尝试在X.6上使用-m32进行编译,但是无法做到这一点(抱怨内存问题)。

希望有人会偶然发现这一点,并很高兴知道答案。

0 个答案:

没有答案