我正在使用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]。
代码编译在调试和发布模式下都没有问题。应用程序在运行时崩溃。
非常感谢任何帮助。
提前谢谢你, 普拉迪普。
答案 0 :(得分:0)
根据this thread:
将发布二进制文件链接到调试时会发生此问题 二进制文件。调试构建和发布版本的内存结构是 不同,有时这可能会导致问题。最好的事情是 在启用调试的情况下构建WSF / CPP。然后问题就会消失。要么 您可以将样本构建为发布版本。
所以这给你留下了两个选择:
configure.ini
文件(或多个文件)中激活此选项。