首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将对COM对象的C#引用传递给C++ DLL

如何将对COM对象的C#引用传递给C++ DLL
EN

Stack Overflow用户
提问于 2009-08-12 19:27:20
回答 3查看 1.8K关注 0票数 2

我正在编写一个Visual Studio外接程序来处理C++代码,我认为COM互操作使我的速度慢了很多。因此,我希望将对COM对象的C#引用传递给一个小的C++动态链接库,让该动态链接库执行必要的计算并返回一个字符串。

我将把一个CodeFunction2对象传递给DLL,并获得一个包含该方法信息的XML字符串。

虽然欢迎你质疑我是否真的需要这样做来提高性能,但如果你在COM互操作中调用一打成员变量来访问数千个方法,那么在托管和非托管代码之间切换似乎会消耗太多的时间。

如何格式化C++动态链接库的参数?一般来说,我没有从托管代码调用非托管代码的经验,但我需要回答的主要问题是如何格式化调用。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-08-12 19:30:14

也许您应该改为编写托管C++ dll (使用/clr开关),然后您可以直接将托管对象传递到C++ dll中,并执行您喜欢的任何COM魔术,而不必担心在dll之间传递它们。

票数 2
EN

Stack Overflow用户

发布于 2009-08-12 23:31:42

如果你真的认为C# / COM互操作正在拖慢你的速度,为什么不在C++中编写你的VS插件呢?这将避免必须从C#外接程序dll传递到C++ dll来处理COM互操作-在同一位置完成所有这些操作。

票数 1
EN

Stack Overflow用户

发布于 2009-08-12 23:36:54

正如其他人所指出的那样,托管C++将是一个好主意,因为它使互操作变得非常容易。如果你决定使用它,而不是托管C++,我建议使用C++/CLI,它在功能上是相同的,但它更新,语法更简洁(它旨在取代托管CLI)。(在托管C++中,你有像__gc这样丑陋的东西)。

Here是一个关于互操作场景的很好的教程。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1268216

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档