当前位置: 首页 > 编程语言 > C#

如何从本机C(++)DLL调用.NET(C#)代码?Share

时间:2023-04-10 13:06:41 C#

如何从本机C(++)DLL调用.NET(C#)代码?我有一个C#app.exe和一个C#my.dll。my.dll.NET项目链接到本机C++DLL(mynat.dll)(外部CDLL接口),从C#调用C++DLL没有问题。(通过使用[DllImport("mynat.dll",CharSet=CharSet.Unicode,CallingConvention=CallingConvention.Cdecl)]属性。)我现在需要添加的是C#dll提供一些C++代码可以提供的回调函数称呼。理想情况下,mynat.dllC++代码将使用LoadLibrary("my.dll")加载C#dll,然后使用GetProcAddress解析它随后可以调用的回调函数。(请注意,当C++代码调用LoadLibrary时,my.dllC#dll已经加载到进程中-此调用只是为了获取dll的句柄。)但是,我不知道如何导出“externCDLL接口”来自.NETDLL什么是正确的方法,我需要做什么才能实现这一点?与普遍的看法相反,这是可能的。看这里。虽然提供给UnmanagedExportsutility的链接SLaks可能有效也可能无效,但我们在这里使用了类似的工具(来自不同的来源)并且由于签名的可执行文件的问题而放弃了这种方法。我们得出以下结论并将在未来这样做:使.NET回调对纯本机模块可用的正确方法是编写一个C++/CLR项目,该项目对.NET程序集执行向上调用并导出本机接口。以上就是C#学习教程:Howtocall.NET(C#)codefromnativeC(++)DLL?分享的所有内容,如果对你有用,需要了解更多C#学习教程,希望大家多多关注—[.NET]->------------->[C(++)]...viaDllImportAttribute[.NET]本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: