Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将dll函数导出到非托管程序_C# - Fatal编程技术网

C# 将dll函数导出到非托管程序

C# 将dll函数导出到非托管程序,c#,C#,如何导出c#dll函数以便能够从非托管程序中使用它们 例如:c#中的Dll和Delphi/c++中的应用程序 我没有exe的源代码,因为未打开S。 无法使用COM。我建议使用Robert Giesecke的。这个问题反复被问,总是得到不同的答案,我一直觉得很有趣:\n顺便说一句,你的答案很容易是“最好的”;也许你应该把它添加到列表的其他部分:)仍然在等待解释它如何工作的答案。没有这些,你永远不会知道它什么时候停止工作,或者它有多贵。这些存根当然不便宜。Giesecke更喜欢神秘、更有趣的方式

如何导出c#dll函数以便能够从非托管程序中使用它们

  • 例如:c#中的Dll和Delphi/c++中的应用程序
我没有exe的源代码,因为未打开S。
无法使用COM。

我建议使用Robert Giesecke的。

这个问题反复被问,总是得到不同的答案,我一直觉得很有趣:\n顺便说一句,你的答案很容易是“最好的”;也许你应该把它添加到列表的其他部分:)仍然在等待解释它如何工作的答案。没有这些,你永远不会知道它什么时候停止工作,或者它有多贵。这些存根当然不便宜。Giesecke更喜欢神秘、更有趣的方式。@HansPassant:在发表评论后的两年多时间里,您已经发现了这一点,但如果没有,它可以使用框架反向P/Invoke支持工作。(这使您的程序集平台特定。)基本上,在IL中,您可以将
.export[1]
添加到方法中,以导出非托管导出表插槽1中的方法。在运行时生成封送处理thunk。使用普通封送属性,就像使用forward P/Invoke一样,自定义有效的本机签名。
.export
子句还采用了可选的“as exported\u name”子句,允许您在导出表中设置名称。当然,我只是使用C++/CLI来完成完全相同的任务。只需要uu declspec(dllexport)。我可以在上面设置断点。