VS2008 非托管C++调用WebService

stevanxiao 2017-12-02 07:55:14
小弟MFC新手一枚,最近公司有个项目升级功能,需要调用WebService服务接口,项目的开发环境是VS2008,基于MFC对话框。根据网上VS2008调用WebService的方法,下载了开源代码 ATL_Server_Source_and_Headers_9_0_70425_Alpha.zip,利用生成的sproxy.exe工具把WebService 的wsdl文件生成了WS_Service1.h头文件,引入工程后,编译就生成如下错误,折腾好几天了,一直找不到原因,求大神指点看看什么原因,拜谢。。。(下周二功能要验收,问题没解决,人都要疯了,没办法了,只能到宝地求助)
PS:我自己重新新建了一个基于VS2008的MFC对话框工程,可以正常编译通过,只有公司的这个项目不行,会报如下错误。两个工程里面的属性设置我也对比过,是一样的,所以可以排除是开发环境的原因。

1>D:\Program Files\Microsoft Visual Studio 9.0\VC\atlmfc\include\atlcom.h(5900) : error C2296: “>>”: 非法,左操作数包含“unsigned long *”类型
1>D:\Program Files\Microsoft Visual Studio 9.0\VC\atlmfc\include\atlutil.h(309) : error C2440: “return”: 无法从“DWORD”转换为“unsigned long *”
1> 从整型转换为指针类型要求 reinterpret_cast、C 样式转换或函数样式转换
1>D:\Program Files\Microsoft Visual Studio 9.0\VC\atlmfc\include\atlutil.h(331) : error C2440: “return”: 无法从“DWORD_PTR”转换为“unsigned long *”
1> 从整型转换为指针类型要求 reinterpret_cast、C 样式转换或函数样式转换
1>D:\Program Files\Microsoft Visual Studio 9.0\VC\atlmfc\include\atlutil.h(343) : error C2440: “=”: 无法从“UINT_PTR”转换为“unsigned long *”
1> 从整型转换为指针类型要求 reinterpret_cast、C 样式转换或函数样式转换
1>D:\Program Files\Microsoft Visual Studio 9.0\VC\atlmfc\include\atlutil.h(391) : error C2664: “SymGetSymFromAddr”: 不能将参数 3 从“unsigned long **”转换为“PDWORD”
1> 与指向的类型无关;转换要求 reinterpret_cast、C 样式转换或函数样式转换
1>D:\Program Files\Microsoft Visual Studio 9.0\VC\atlmfc\include\atlutil.h(421) : error C2440: “=”: 无法从“unsigned long”转换为“unsigned long *”
1> 从整型转换为指针类型要求 reinterpret_cast、C 样式转换或函数样式转换
1>D:\Program Files\Microsoft Visual Studio 9.0\VC\atlmfc\include\atlutil.h(553) : error C2664: “StackWalk”: 不能将参数 7 从“LPVOID (__stdcall *)(HANDLE,unsigned long *)”转换为“PFUNCTION_TABLE_ACCESS_ROUTINE”
1> 在匹配目标类型的范围内没有具有该名称的函数
1>D:\Program Files\Microsoft Visual Studio 9.0\VC\atlmfc\include\atlcache.h(3044) : error C2144: 语法错误 : “unsigned long”的前面应有“)”
1>D:\Program Files\Microsoft Visual Studio 9.0\VC\atlmfc\include\atlcache.h(3044) : error C2059: 语法错误 : “)”
1>D:\Program Files\Microsoft Visual Studio 9.0\VC\atlmfc\include\atlisapi.h(10469) : warning C4005: “MAX_NAME_LEN”: 宏重定义
1> d:\code manage\ats\ats2 储能机\1源代码\rs485通讯\复件 ats410-00011-037_mes\ateprogram_chromadc_double\GWCommonPublic.h(146) : 参见“MAX_NAME_LEN”的前一个定义
1>D:\Program Files\Microsoft Visual Studio 9.0\VC\atlmfc\include\atlhttp.inl(2406) : error C2446: “==”: 没有从“unsigned int”到“unsigned long *”的转换
1> 从整型转换为指针类型要求 reinterpret_cast、C 样式转换或函数样式转换
1>D:\Program Files\Microsoft Visual Studio 9.0\VC\atlmfc\include\atlhttp.inl(2406) : error C2040: “==”: “unsigned long *”与“unsigned int”的间接寻址级别不同
1>D:\Program Files\Microsoft Visual Studio 9.0\VC\atlmfc\include\atlhttp.inl(2406) : error C2446: “==”: 没有从“unsigned int”到“unsigned long *”的转换
1> 从整型转换为指针类型要求 reinterpret_cast、C 样式转换或函数样式转换
1>D:\Program Files\Microsoft Visual Studio 9.0\VC\atlmfc\include\atlhttp.inl(2406) : error C2040: “==”: “unsigned long *”与“unsigned int”的间接寻址级别不同
1>D:\Program Files\Microsoft Visual Studio 9.0\VC\atlmfc\include\atlhttp.inl(2474) : error C2446: “==”: 没有从“unsigned int”到“unsigned long *”的转换
1> 从整型转换为指针类型要求 reinterpret_cast、C 样式转换或函数样式转换
1>D:\Program Files\Microsoft Visual Studio 9.0\VC\atlmfc\include\atlhttp.inl(2474) : error C2040: “==”: “unsigned long *”与“unsigned int”的间接寻址级别不同
1>D:\Program Files\Microsoft Visual Studio 9.0\VC\atlmfc\include\atlhttp.inl(2474) : error C2446: “==”: 没有从“unsigned int”到“unsigned long *”的转换
1> 从整型转换为指针类型要求 reinterpret_cast、C 样式转换或函数样式转换
1>D:\Program Files\Microsoft Visual Studio 9.0\VC\atlmfc\include\atlhttp.inl(2474) : error C2040: “==”: “unsigned long *”与“unsigned int”的间接寻址级别不同
1>D:\Program Files\Microsoft Visual Studio 9.0\VC\atlmfc\include\atlhttp.inl(2475) : error C2446: “==”: 没有从“unsigned int”到“unsigned long *”的转换
1> 从整型转换为指针类型要求 reinterpret_cast、C 样式转换或函数样式转换
1>D:\Program Files\Microsoft Visual Studio 9.0\VC\atlmfc\include\atlhttp.inl(2475) : error C2040: “==”: “unsigned long *”与“unsigned int”的间接寻址级别不同
1>D:\Program Files\Microsoft Visual Studio 9.0\VC\atlmfc\include\atlhttp.inl(2475) : error C2446: “==”: 没有从“unsigned int”到“unsigned long *”的转换
1> 从整型转换为指针类型要求 reinterpret_cast、C 样式转换或函数样式转换
1>D:\Program Files\Microsoft Visual Studio 9.0\VC\atlmfc\include\atlhttp.inl(2475) : error C2040: “==”: “unsigned long *”与“unsigned int”的间接寻址级别不同
1>D:\Program Files\Microsoft Visual Studio 9.0\VC\atlmfc\include\atlhttp.inl(2624) : error C2446: “==”: 没有从“unsigned int”到“unsigned long *”的转换
1> 从整型转换为指针类型要求 reinterpret_cast、C 样式转换或函数样式转换
1>D:\Program Files\Microsoft Visual Studio 9.0\VC\atlmfc\include\atlhttp.inl(2624) : error C2040: “==”: “unsigned long *”与“unsigned int”的间接寻址级别不同
1>D:\Program Files\Microsoft Visual Studio 9.0\VC\atlmfc\include\atlhttp.inl(2624) : error C2446: “==”: 没有从“unsigned int”到“unsigned long *”的转换
1> 从整型转换为指针类型要求 reinterpret_cast、C 样式转换或函数样式转换
1>D:\Program Files\Microsoft Visual Studio 9.0\VC\atlmfc\include\atlhttp.inl(2624) : error C2040: “==”: “unsigned long *”与“unsigned int”的间接寻址级别不同
1>正在生成代码...
...全文
885 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
sevancheng 2018-01-12
  • 打赏
  • 举报
回复
vc的话 Microsoft Soap Toolkit 3.0 ,用起来很简单
jiu6332356 2018-01-11
  • 打赏
  • 举报
回复
问下 gsoap支持https吗
stevanxiao 2017-12-26
  • 打赏
  • 举报
回复
感谢各位,最后用gsoap搞定了
这不是鸭头 2017-12-07
  • 打赏
  • 举报
回复
如果功能简单,可以直接用WinInet。就几个函数。
凌乱哥 2017-12-04
  • 打赏
  • 举报
回复
yeah2000 2017-12-03
  • 打赏
  • 举报
回复
webservices可以考虑使用gsoap开源组件
stevanxiao 2017-12-03
  • 打赏
  • 举报
回复
引用 2 楼 zgl7903 的回复:
之前是否要包含 <windows.h> ? 或者有某些编译宏需要设置?
好的,谢谢 我试一下,下午在尝试使用gsoap
zgl7903 2017-12-03
  • 打赏
  • 举报
回复
之前是否要包含 <windows.h> ? 或者有某些编译宏需要设置?

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧