[英]CoCreateInstance works great in Release but in debug doesn't
我是 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 運行時庫。
另外:在 VS 2008 的輸出窗口中,我注意到調試在某些消息處停止:
'OmpClimApp.exe': Loaded '\\omegaserver\omega\app32\OMEGA.DLL\RWUXThemeS.dll', Binary was not built with debug information.
錯誤在哪里?
看起來問題是混合了 MS CRT 庫的Debug
和Release
程序集版本。 Microsoft.VC80.CRT
和Microsoft.DebugVC80.CRT
程序集使用相同的公共公鑰"1fc8b3b9a1e18e3b"
因此它們不能同時加載到單個應用程序中。
在您的情況下, RWUXThemeS.dll
清單是指Microsoft.VC80.CRT
但您的應用程序在Debug
版本中的清單是指Microsoft.DebugVC80.CRT
。 嘗試加載RWUXThemeS.dll
會導致描述實際上不正確的錯誤,應該是“無法加載另一個程序集已使用公鑰的程序集”。
可能的解決方案:您需要在調試版本RWUXThemeS.dll
調試版本鏈接到您的應用程序。 假設它的名字是RWUXThemeSD.dll
。
有關更多詳細信息,請參閱MSDN (社區內容,主要文章看起來與您的問題無關)。
RWUXTheme
庫是 Rogue Wave Stingray Studio 的一部分,請參閱文檔。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.