我正在将我的解决方案从c#转移到c ++。我创建了几个原生的c ++ dll,它们很好。将原生dll连接到c ++和c#都很容易。对于c#我使用P / Invoke进行方法执行而使用delegate
进行回调,我只是将指针传递给非托管内存并使用Marshall类读取它。
现在我有相反的情况 - 我需要创建C#
项目NOW将从另一个C#
项目中使用但是LATER我会将主项目重写为C ++,所以我需要访问{{1来自C ++的项目。它应该只提供几种方法:C#
PlaceOrder(void* pointerToStruct)
和一个回拨CancelOrder(void* pointerToStruct)
我正在寻找提示和示例。如何创建可在本机C ++和C#中使用的C#项目,并提供多种方法+一个回调。
特别是我现在不应该对内存做什么 - 我应该在c#中写入非托管内存并在c ++中读取它,还是应该在c#中写入托管内存并以某种方式读取c ++中的托管内存...我在参数中传递的结构指针应该指向非托管内存或托管内存等。
答案 0 :(得分:3)
您可能需要创建COM组件:Create COM component and ActiveX controls in .Net
如果您在Windows8中进行开发,您可能会想到创建Windows组件:
答案 1 :(得分:1)
在C#上编写的dll的问题在于,无法创建导出表(将静态方法标记为导出): 有 DllImportAttribute ,但C#中没有 DllExportAttribute 。虽然有两种方式:
另见
Is is possible to export functions from a C# DLL like in VS C++?