从 C++ 创建 COM 对象?
我想从 C++ 代码创建一个 dll 并在 C# 中使用它。有没有从 C++ 创建 COM 对象的解决方案?
我不想使用 System.Runtime.InteropServices。
非常感谢
I want to create a dll from a C++ code and the use it in C#. Is there a solution of creating COM object from C++ ?
I don't want to use System.Runtime.InteropServices
.
Many thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
当然,您可以使用 C++ 编写 COM+ 对象。 这是一个教程。
Of course that you can write COM+ objects with C++. Here's a tutorial.
您可以直接编写COM(请参阅@Darin Dimitrov的回答),但您也可以使用ATL。我最喜欢的将 C++ 代码公开给 C# 的解决方案(尽管没有 COM)是使用 C++/ CLI。
You can write COM directly (see @Darin Dimitrov's answer), but you can also use ATL. My favorite solution to expose C++ code to C# (without COM though) is to use C++/CLI.
有3种方法可以解决这个问题。
1) 使用 C# 中的 PInvoke 调用本机方法。
2) 使用 C++-CLI 创建一个向 C# 公开本机功能的层。这是我推荐的性能明智的方法。
3) 将C++ dll编写为COM对象并从C#访问。需要 COM 知识,因此需要开发成本。
There are 3 ways to go about it.
1) Use PInvoke from C# to call into native methods.
2) Use C++-CLI to create a layer that exposes native functionality to C#. This is my recommended approach performance wise.
3) Write the C++ dll as a COM object and access from C#. Requires COM knowledge and hence developement cost.
你可以使用ATL,它太简单了,你只需要注册dll即可。之后你就可以在所有c#程序中使用它
you can use ATL , it too easy and you just have to register the dll . after that you can use it in all c# programms