WSO2 C ++客户端应用程序在调用Environment :: initialize方法时崩溃

时间:2013-01-16 23:45:23

标签: c++ visual-studio-2010 wso2

我正在使用WSO2框架为我的一个项目编写基于C ++的Web服务。我能够安装框架,运行轴服务器并使用示例客户端程序对其进行测试。

当我尝试自己编写客户端时,代码编译时没有任何问题或警告。但是,应用程序在运行时崩溃而没有正确的消息。我尝试了一些控制台std :: count's,并发现在调用Environment :: initialize方法期间发生了崩溃。请参阅下面的客户端代码。这几行构成了整个客户端应用程序,因此没有遗漏任何代码。

int main(int argc, char *argv[]){

ServiceClient * sc;
Environment::initialize("hello.log", AXIS2_LOG_LEVEL_TRACE);
string end_point = "http://localhost:9090/axis2/services/hello";
sc = new ServiceClient(end_point);
OMElement * payload = new OMElement("greet");
payload->setText("Hello Service!");
try
{
   OMElement* response = sc->request(payload, "");
    if (response)
    {
        cout << endl << "Response: " << response << endl;
    }
}
catch (AxisFault & e)
{
    if (sc->getLastSOAPFault())
    {
        cout << endl << "Fault: " << sc->getLastSOAPFault() << endl;
    }
    else
    {
        cout << endl << "Error: " << e << endl;
    }
}
delete payload;

ServiceClient * sc; Environment::initialize("hello.log", AXIS2_LOG_LEVEL_TRACE); string end_point = "http://localhost:9090/axis2/services/hello"; sc = new ServiceClient(end_point); OMElement * payload = new OMElement("greet"); payload->setText("Hello Service!"); try { OMElement* response = sc->request(payload, ""); if (response) { cout << endl << "Response: " << response << endl; } } catch (AxisFault & e) { if (sc->getLastSOAPFault()) { cout << endl << "Fault: " << sc->getLastSOAPFault() << endl; } else { cout << endl << "Error: " << e << endl; } } delete payload;

我正在使用Visual Studio 2010进行IDE&amp;编译器。我已经包含了所有标头和必要库的路径 [axutil.lib; axiom.lib; axis2_parser.lib; axis2_engine.lib; wso2_wsf.lib]。

代码编译在调试和发布模式下都没有问题。应用程序在运行时崩溃。

非常感谢任何帮助。

提前谢谢你, 普拉迪普。

1 个答案:

答案 0 :(得分:0)

根据this thread

  

将发布二进制文件链接到调试时会发生此问题   二进制文件。调试构建和发布版本的内存结构是   不同,有时这可能会导致问题。最好的事情是   在启用调试的情况下构建WSF / CPP。然后问题就会消失。要么   您可以将样本构建为发布版本。

所以这给你留下了两个选择:

  • 在发布模式下编译。
  • 在启用调试的情况下重建WSO2 WSF / C ++。您可以在源项目的configure.ini文件(或多个文件)中激活此选项。