小弟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>正在生成代碼...
uj5u.com熱心網友回復:
webservices可以考慮使用gsoap開源組件uj5u.com熱心網友回復:
之前是否要包含 <windows.h> ? 或者有某些編譯宏需要設定?uj5u.com熱心網友回復:
好的,謝謝 我試一下,下午在嘗試使用gsoap
uj5u.com熱心網友回復:
使用gsoapuj5u.com熱心網友回復:
如果功能簡單,可以直接用WinInet。就幾個函式。uj5u.com熱心網友回復:
感謝各位,最后用gsoap搞定了uj5u.com熱心網友回復:
問下 gsoap支持https嗎uj5u.com熱心網友回復:
vc的話 Microsoft Soap Toolkit 3.0 ,用起來很簡單轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/76843.html
