0
我在C#中定義了一個接口,它將在C#中實現,但是從非託管C++模塊調用爲COM對象。如何將C#接口的方法參數公開爲特定的COM/ODL類型?
我知道我想要/需要的C++ API的樣子,我怎麼會通過ODL定義它:
//args is an array of BSTR e.g VT_ARRAY|VT_BSTR
HRESULT DoMethod(/*[in]*/BSTR name, /*[in]*/VARIANT args);
我不知道如何在C#中設置這引起TLB定義以匹配這個,關於VARIANT
。 它可能是如下簡單的東西?
void DoMethod(string name, string args[])
我一直在四處尋找COM/.NET互操作文檔,但任我已經錯過了這一部分,或者乾脆不明白就是BEING描述的內容!
順便說一句,我怎麼能看到正在發出什麼COM定義爲給定的C#接口? DLL/TLB是否易於檢查? (爲什麼?)
所以反對<--> VARIANT,我發現這個文件要求之後,但我不確定我仍然會如何創建將被編組爲右型變種的這個對象?你可能會添加一個(僞)實現的'DoMethod()'?就變種V而言,safearray--我們最初的僅C++項目總是以這種方式完成它,而不是通過裸安全陣列。我無法告訴你爲什麼,它已經快20歲了! –
呃,不知道要求如何能是有意義的,它是有創建陣列,它的東西,在一個變體的調用者。 DoMethod()使用它。 –
是的,你說得對。雖然如果它是一個輸出參數,我仍然對同樣的基本問題感興趣,但這不是我現在需要的...感謝您發現此問題。 –