csExWB 中 的ComUtilities 的vs 2012 编译器问题解决
以下文章摘自 http://www.canaware.com/default.aspx?g=posts&t=722
Compilation error in VS 2008
Compile solution ComUtilities using Visual Studio 2008. Compilation will fail with:
1>.\ComUtilities.idl(46) : error MIDL2003 : redefinition : IUri 1>.\ComUtilities.idl(53) : error MIDL2003 : redefinition : Uri_PROPERTY_ABSOLUTE_URI 1>.\ComUtilities.idl(54) : error MIDL2003 : redefinition : Uri_PROPERTY_STRING_START 1>.\ComUtilities.idl(55) : error MIDL2003 : redefinition : Uri_PROPERTY_AUTHORITY ...
I found a solution in
http://groups.google.com/group/csexwb/browse_thread/thread/4c6106529769a9f8?pli=1
According to this I changed #define _WIN32_IE 0x0600 to #define _WIN32_IE 0x0700 in stdafx.h and commented lines 38-259 in ComUtilities.idl and it worked.
大意是:stdafx.h 的 #define _WIN32_IE 0x0600 改为 #define _WIN32_IE 0x0700
ComUtilities.idl 中的38-259行注释掉。
我的改法是:将 stdafx.h 的 #define _WIN32_IE 0x0600 改为 #define _WIN32_IE 0x0800,这个改法未经证实,只是我这可以用,那个0700我这也可以用。
还有,调试这个程序的时候,会出来一个错误,什么无法从com上下文转换为什么,状态已持续60秒等的,解决方法是:调试 → 异常,managrd debugging assistants中取消勾选 ContextSwitchDeadlock 的 throw (中文:引发)项就OK了。这对需要长时间执行的程序报出的错误都可解决。
证实,可以处理,按此方法!