簡體   English   中英

如何將對COM對象的C#引用傳遞給C ++ DLL

[英]How to pass a C# Reference to COM Object to a C++ DLL

我正在編寫一個Visual Studio加載項來處理C ++代碼,並認為COM互操作使我慢了很多。 因此,我想將對COM對象的C#引用傳遞給小型C ++ DLL,讓DLL執行必要的計算並返回一個字符串。

我將把CodeFunction2對象傳遞給DLL,並獲得一個帶有方法返回信息的XML字符串。

歡迎您質疑我是否真的需要此功能來提高性能,但是如果您在COM互操作中調用十二個成員變量以獲取數千種方法,則似乎會浪費太多時間在托管代碼和非托管代碼之間進行切換。

如何格式化C ++ DLL的參數? 我通常沒有從托管代碼調用非托管代碼的經驗,但是我需要回答的主要問題是如何格式化調用。

也許您應該改為編寫托管C ++ dll(使用/ clr開關),然后可以將托管對象直接傳遞到C ++ dll中,並執行您喜歡的任何COM魔術操作,而不必擔心在dll之間傳遞它們。

如果您真的認為C#/ COM互操作使您慢下來,為什么不用C ++編寫VS插件呢? 這樣可以避免必須從C#插件dll傳遞到C ++ dll來處理COM互操作-都在同一位置進行。

正如其他人指出的那樣,托管C ++將是一個好主意,因為它使互操作變得輕而易舉。 如果您決定使用它,而不是Managed C ++,我建議使用C ++ / CLI,它的功能相同,但是它較新並且語法更加簡潔(旨在替代Managed C ++)。 (在托管C ++中,您會遇到諸如__gc東西,並且很難看)。

是有關互操作方案的不錯的教程。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM