首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从C#访问C++的正确模式是什么?

问从C#访问C++的正确模式是什么?
EN

Stack Overflow用户
提问于 2014-08-05 06:30:54
回答 2查看 110关注 0票数 0

我通常在Android/Java上工作,但现在我正在开发Windows 8.1。我的库中有C++代码,需要能够访问提供的C#程序集DLL中的功能。

C# DLL有一个接口,需要实现这些接口才能接收来自DLL的回调。

我试过的是:

  1. 我尝试使用Windows运行时组件来包装DLL,但随后它抱怨该接口不能与Windows运行时组件一起使用。
  2. 我可以将DLL封装在一堆C#代码中,并提供一个接口来将任何回调从DLL转发到任何实现( C++ ),但是C++代码不希望将名称空间识别为现有的命名空间。

丢失的那块是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-10-11 04:48:38

我能够使用C# Windows组件访问DLL。来自DLL的回调接口是在C#中实现的,将调用C# Windows组件来完成工作。

要完成的工作是调用一个C++ Windows组件,该组件将与C# Windows组件进行对话。然后,C++ Windows组件可以成为我们拥有的C++代码库的网关。

票数 0
EN

Stack Overflow用户

发布于 2014-08-05 07:43:56

C++/C#的互操作性可以通过两种方式实现:通过Win32 DLL或通过COM组件。

如果您计划使用Win32方法,则必须提供所有CLR类型的元数据,那么托管编译器将将元数据编译到程序集中,JIT编译器将生成执行C#/Win32 32转换的存根。

如果计划使用COM组件,则必须使用Runtime可调用包装器,它将负责实例化、类型导航、错误处理和内存管理。

有关RCW的更多信息在这里:http://msdn.microsoft.com/en-us/library/8bwh56xe(v=vs.110).aspx

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

https://stackoverflow.com/questions/25132458

复制
相关文章

相似问题

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