簡體   English   中英

CoCreateInstance 在 Release 中效果很好,但在調試中不行

[英]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 庫的DebugRelease程序集版本。 Microsoft.VC80.CRTMicrosoft.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM