В компоненте
C++ (Qt)
STDMETHODIMP CConnection::GetConnectionParams(BSTR* login, BSTR* pass, BSTR* db)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
CString sLogin = L"wyvern";
CString sPass = L"wyvern";
CString sDb = L"XE";
*login = sLogin.AllocSysString();
*pass = sPass.AllocSysString();
*db = sDb.AllocSysString();
return S_OK;
}
idl-ка
C++ (Qt)
[id(1), helpstring("method GetConnectionParams")] HRESULT GetConnectionParams([out] BSTR* login, [out] BSTR* pass, [out] BSTR* db);
В qt-приложении
C++ (Qt)
QAxObject object("ShellCore.Connection");
QString login, pass, db;
object.dynamicCall("GetConnectionParams(QString&,QString&,QString&)", login, pass, db);
QMessageBox::information(0, "Debug", login + " " + pass + " " + db);
и login, и pass, и db - пустые...
я уже немножко отчаялся))
Через queryInterface, работой с интерфейсами и BSTR напрямую все замечательно... А так - ни в какую...