我制作了一个从 geovision SDK 导入“.ocx”文件的 win32 控制台应用程序。我在生成的“.tli”和“.tlh”标头中找到了 COM 组件的正确 CLSID 和接口 ID,并且一切正常,直到我调用任何方法(例如在下面的代码中的 Login2)。然后 _com_exception 发生,它没有提供关于到底发生了什么的详细信息。
谁能给我一个提示我下一步应该做什么或我应该在哪里寻找解决方案?我花了一个多星期才达到在控制台应用程序中使用 COM 组件的地步……我希望它可以做到。
#include "stdafx.h"
#include "stdio.h"
#import "C:\Windows\GeoOCX\SinglePlayer\20121003\GVSinglePlayer.ocx" \
named_guids no_namespace no_smart_pointers
int _tmain(int argc, _TCHAR* argv[])
{
try
{
CoInitialize(NULL);
_DGVSinglePlayer* pSP = 0;
HRESULT hr = CoCreateInstance(CLSID_GVSinglePlayer ,NULL, CLSCTX_INPROC_SERVER,DIID__DGVSinglePlayer,reinterpret_cast <void**>(&pSP));
_bstr_t lpIPAddress("11.11.11.11");
long iPort=10000;
_bstr_t lpUserID("abcde");
_bstr_t lpPassword("password");
if ( SUCCEEDED ( hr ) )
{
hr = pSP->Login2(lpIPAddress,iPort,lpUserID,lpPassword );
if ( SUCCEEDED ( hr ) )
{
printf("Cool");
}
}else
{
}
pSP->Release();
CoUninitialize();
} catch (_com_error& e)
{
char buf[80];
sprintf(buf, "Error: %S",e.Description());
printf("%s\n",buf);
}
return 0;
}
由于 e.Description() 不打印任何信息,因此我附上了有关错误的视觉信息。