1

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

当我尝试自己编写客户端时,代码编译时没有任何问题或警告。但是,应用程序在运行时崩溃而没有正确的消息。我尝试放置一些控制台 std::count 并发现崩溃是在调用 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;

}

我将 Visual Studio 2010 用于 IDE 和编译器。我已经包含了所有头文件和必要库的路径 [axutil.lib;axiom.lib;axis2_parser.lib;axis2_engine.lib;wso2_wsf.lib;]。

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

任何帮助是极大的赞赏。

提前谢谢你,普拉迪普。

4

1 回答 1

0

根据这个线程

当您将发布二进制文件链接到调试二进制文件时,会出现此问题。调试构建和发布构建的内存结构不同,有时这会导致问题。最好的办法是在启用调试的情况下构建 WSF/CPP。那么问题应该会消失。或者您可以将您的示例构建为发布版本。

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

  • 在发布模式下编译。
  • Rebuild WSO2 WSF/C++ with debug enabled. You can activate this option in the configure.ini file (or files) in the source project.
于 2013-11-20T00:25:13.037 回答