0
我對unmanaged C++並不是很熟悉,因爲我只使用過MFC和Dot Net。我有一個非託管的dll,我想引用一個進程外服務器。我已經試過如下:如何從非託管C++引用com.exe?
#import "C:\Program Files (x86)\statconn\DCOM\bin\StatConnectorSrv.exe"
using namespace STATCONNECTORSRVLib;
和
#import "C:\Program Files (x86)\statconn\DCOM\bin\StatConnectorSrv.tlb"
using namespace STATCONNECTORSRVLib;
STATCONNECTORSRVLib包含對象StatConnector。但是,當我嘗試實例化StatConnector時,我得到「不完整的類型是不允許的」,並且intellisense告訴我StatConnector是一個結構體。
StatConnector *conn = new StatConnector();
我在做什麼錯?
好了,我注意到,當我添加類型庫在.Net中它也引用StatConnLib,它包含接口,所以我也導入了StatConnLib.tlb。但是,'IStatConnector ptr(__ uuidof(StatConnector));'給了我幾個錯誤:_Comject抽象類型的對象「StatConnectorCommonLib :: IStatConnector」不允許__,_「StatConnectorCommonLib :: IStatConnector :: IStatConnector」的實例與參數列表匹配。參數類型是:(const _GUID)。另一個海報能夠使用'StatConnector * conn = new StatConnector();'來自非託管C++,所以也許#import有問題? – 2013-05-04 17:41:47
您確定鍵入了IStatConnectorPtr而不是IStatConnector嗎?你必須聲明像'IStatConnectorPtr ptr(__ uuidof(StatConnector))'。 Ptr是一個特殊的後綴。 – 2013-05-04 22:39:31
啊,是的,錯過了。現在,它的工作,謝謝。爲什麼IStatConnectionPtr不能在對象瀏覽器中顯示?它是由導入過程生成的嗎? – 2013-05-06 08:55:32