- mio problemaCoInitialize() non è stato chiamato eccezioni in C++
ho ottenuto CoInitialize non è stato chiamato exption.
- mia struttura di progetto
Ecco il mio porblem. Ho una DLL COM, MCLWrapper.dll sviluppata con C#; Ho un dll nativo C++ nativo, ThorDetectorSwitch.dll che chiama MCLWrapper.dll; E infine, ho un'applicazione console TDSTest.exe che chiama ThorDetectorSwitch.dll. Fondamentalmente, qualcosa di simile:
TDSTest.exe (C++ console) -> ThorDetectorSwitch.dll (C++ nativo) -> MCLWrapper.dll (C#)
Codice in TDSTest.exe che i carichi il ThorDetectorSwitch.dll:
HINSTANCE hInst = LoadLibrary(_T("C:\\TIS_Nick\\Hardware\\Devices\\ThorDetectorSwitch\\TDSTest\\TDSTest\\Debug\\Modules_Native\\ThorDetectorSwitch.dll"));
di costruzione della ThorDetectorSwitch.cpp
ThorDetectorSwitch::ThorDetectorSwitch() : _mcSwitch(__uuidof(MCLControlClass))
{
_A = WstringToBSTR(L"A");
_B = WstringToBSTR(L"B");
_C = WstringToBSTR(L"C");
_D = WstringToBSTR(L"D");
_deviceDetected = FALSE;
}
Il punto di rottura colpisce la prima parentesi del costruttore della ThorDetectorSwitch.dll sopra, ma l'eccezione si è verificata immediatamente se ho colpito F10 (un passo in più)
Si salta a
hr = CoCreateInstance(rclsid, pOuter, dwClsContext, __uuidof(IUnknown), reinterpret_cast<void**>(&pIUnknown));
nel ComIP .h. L'hr è semplicemente "CoInitialize non è stato chiamato".
Ho pensato a questo problema per giorni e non riesco a trovare una soluzione. Chiunque qui può condividere pensieri? Lo apprezzo davvero.
Credo che è necessario chiamare 'CoInitialize()'. * Fonte: il messaggio di errore "peggio" dice "CoInitialize() non è stato chiamato" * –
@LuchianGrigore Ho chiamato CoInitialize() come menzionato Reed, ma c'è un altro problema. Vedi i miei commenti a Reed's. –