我有一個很老的(VC++ 5.0)專有的DLL,我需要從C#(Visual Studio 2010)中使用。該示例指定要訪問此組件,我需要調用指向OLE的CreateDispatch("application")
。從C#調用舊的OLE組件
下面是示例代碼(C++):
IComponentServer Server;
Server.CreateDispatch("Component.Server");
我加入通過Visual Studio一個參考給TLB文件我有,我可以成功地導入其命名空間,但是IComponentServer
沒有任何方法稱爲CreateDispatch
。
什麼是通過C#創建OLE組件實例的正確方法?
謝謝JaredPar。 任何想法,爲什麼我可能會得到您提供的代碼InvalidCastException? 此操作失敗,因爲IIC'{BAA135B2-F931-11D0-9C14-0060973155F0}'接口的COM組件上的QueryInterface調用由於以下錯誤而失敗:沒有此類接口支持(異常來自HRESULT:0x80004002(E_NOINTERFACE ))。 – jbx 2010-08-23 18:07:30
@jbx,最有可能的原因是COM組件的類型庫未正確註冊。 – JaredPar 2010-08-23 18:12:26
我試圖regasm失敗,說它不是一個有效的.Net程序集(正確,所以這是一個VC++ 5.0年齡的舊庫) 我試過regtlibv12.exe,它說它成功地註冊了TLB。然而同樣的問題。任何想法我可以做什麼? – jbx 2010-08-23 20:49:26