gsoap

一、来自网上的说明,我遇到了“unresolved external symbol _namespaces”这个问题,通过下面的方法解决了。

 
 
VC++MFC下实现SOAP服务端和SOAP客户端

在《C++ 开发SOAP服务端和SOAP客户端》已经在win32控制台实现了,现在在MFC框架下实现SOAP服务端和SOAP客户端

新建一个基于对话框的工程名字是MFCSOAPClient

新建工程的时候不需要添加socket支持

因为在stdsoap2.文件中已经增加了支持

将利用soapcpp2.exe 生成的

calc.nsmap

soapC.cpp

soapcalcProxy.cpp

soapcalcProxy.h

socpClient.cpp

soapH.h

soapStub.h

stdsoap2.h

stdsoap2.cpp

添加到工程中直接编译

soapc.cpp(2796) : fatal error C1010:unexpected end of file while

多个文件出现这样的提示

缺少预编译头文件解决方法是在出错的文件的开头增加 #include "stdafx.h"

 

再次编译出现如下错误

stdsoap2.obj : error LNK2001: unresolvedexternal symbol _namespaces

Debug/MFCSOAPClient.exe : fatal errorLNK1120: 1 unresolved externals

 

stdsoap2.cpp 文件中除了添加 #include "stdafx.h"外,还需要增加#include"calc.nsmap"

编译通过

 

在文件MFCSOAPClientDlg.cpp中增加

#include "soapcalcProxy.h"

在主窗口界面中增加一个按钮,该按钮点击事件如下

UpdateData(TRUE);

calcProxy calc;

const char server[] = "http://localhost:8080";

calc.soap_endpoint =server;

calc.add(m_Edit_d1,m_Edit_d2, &m_Edit_dResult);

UpdateData(FALSE);

if (calc.error)

{

         AfxMessageBox(_T("出现错误"));

}

这里只做了加法的demo。

在两个编辑框中输入两个数,服务端计算完结果将显示在另外的编辑框中

 

服务端部分

新建一个基于对话框的工程,名字是MFCSOAPServer

将利用soapcpp2.exe 生成的

soapC.cpp

soapcalcService.h

soapcalcService.cpp

soapH.h

soapStub.h

calc.nsmap

stdsoap2.h

stdsoap2.cpp

添加到工程

代码更改除了类似客户端外,还需要将加减乘除的实现代码添加到soapcalcService.cpp中,之所以添加到soapcalcService.cpp文件中时因为声明都在soapcalcServic.h文件中

MFCSOAPServerDlg.cpp文件中增加

 

#include "soapcalcService.h"

 

在窗口初始化中增加

            calcService calc;

                   /*run iterative server on port until fatal error */

                   if(calc.run(8080))

                   {

                            calc.soap_stream_fault(std::cerr);

                   }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值