// prepare COM for forward
::CoInitialize(NULL);
// create connection
ISLMSConnection *pConnection;
HRESULT hr = ::CoCreateInstance(CLSID_SLMSConnection, NULL, CLSCTX_ALL, IID_ISLMSConnection, (void**)&pConnection);
if (FAILED(hr)) {
err_state = true;
emit errorWhileConnection(tr("Can not create instance of SLMessageQueue2Lib::CLSID_SLMSConnection"));
return;
}
В 32-х битной сборке все хорошо. Функция отрабатывает и сигнал с ошибкой не приходит. В 64-х битах HRESULT становится равным коду ошибки REGDB_E_CLASSNOTREG. Сама библиотека SLMessageQueue2.dll является 32-х битной, и, полагаю, работает как CLSCTX_INPROC_HANDLER (поправьте, если я не прав). 64-х битный процесс не может подгружать 32-х битные библиотеки.
Планируется ли сделать поддержку 64-х битной разработки? Или есть способ, о котором я не знаю?
Да, практически все наши библиотеки в данный момент являются 32-разрядными. Но обстоятельства заставляют нас переходить на 64-разрядные версии. Так что, в своё время дойдёт очередь и до 64-разрядной версии SLMessageServer.