使用Visual c + + 6.0,我創建了一個基於ATL的.EXE服務器。 (VC6,因爲我正在處理遺留代碼,.exe服務器,因爲我需要在進程外環境中測試操作,目前.exe服務器本質上是不可操作的)無法使用代理存根創建com對象dll
我已經構建並註冊了相應的代理存根DLL。
我有一個客戶端應用程序,並
- 的CoCreateInstance的IUnknown的一個調用的FinalConstruct在服務器對象和成功(所以服務器正確調用)
- OleRun返回IUnknown接口的成功上的IUnknown
- 的QueryInterface我的服務器對象的指針失敗,錯誤代碼爲0x8000402(無此類接口支持)IMarshall接口
se步驟從(comip.h :: CreateInstance)複製
問題似乎是proxystub DLL沒有被調用調試窗口)
The OleCom Object viewer for my class and interface can be seen here https://skydrive.live.com/redir?resid=AE43106917EBD9E1!191 & AUTHKEY =!AIOWeS5P3o2mlpw
8891..ca4d是我對象的類接口ID
A298 ... 420c是我的服務器對象(基於IDispatch)的接口ID
TIA的任何援助
你有沒有註冊的proxystub?您可以使用Process Monitor來查看COM是否嘗試加載proxystub,以及接下來會發生什麼。 – sharptooth
out of proc COM服務器的生命週期是什麼樣的?它啓動然後立即退出?另外,你能描述一下你使用OleRun的原因嗎?我懷疑oleauto32.dll正在加載併爲你執行編組。你的問題沒有提到任何自定義接口,在這種情況下,需要發生的任何編組都可以通過oleaut32完成,並且不需要加載自定義代理/存根。 – Tra5is
還有一個問題,調用Run的組件是否在Running Object Table中註冊自身? – Tra5is