我是COM中的新手,在调试dll时遇到问题。在这段代码中:
_Check_return_ HRESULT CoCreateInstance(_In_ REFCLSID rclsid, _In_opt_ LPUNKNOWN pUnkOuter = NULL, _In_ DWORD dwClsContext = CLSCTX_ALL)
throw()
{
ATLASSERT(p == NULL);
return ::CoCreateInstance(rclsid, pUnkOuter, dwClsContext, __uuidof(T), (void**)&p);
}
作为回报我有错误R6034:应用程序试图错误地加载C运行时库。
Plus:在VS 2008的输出窗口中,我注意到调试在某些消息处停止:
'OmpClimApp.exe': Loaded '\\omegaserver\omega\app32\OMEGA.DLL\RWUXThemeS.dll', Binary was not built with debug information.
哪里出错?
答案 0 :(得分:3)
看起来问题是混合MS CRT库的Debug
和Release
汇编版本。 Microsoft.VC80.CRT
和Microsoft.DebugVC80.CRT
程序集使用相同的公共publicKeyToken "1fc8b3b9a1e18e3b"
,因此无法将它们同时加载到单个应用程序中。
在您的情况下,RWUXThemeS.dll
的清单引用Microsoft.VC80.CRT
,但Debug
版本中您的应用的清单引用Microsoft.DebugVC80.CRT
。试图加载RWUXThemeS.dll
会导致错误描述实际上不正确,它应该是“无法加载程序集,哪个公钥已被另一个程序集使用”。
可能的解决方案:您需要在调试版本中将RWUXThemeS.dll
的调试版本链接到您的应用程序。假设其名称为RWUXThemeSD.dll
。
请参阅MSDN for more details(社区内容,主要文章与您的问题无关)。
RWUXTheme
库是Rogue Wave Stingray Studio的一部分,请参阅documentation。