Mik*_*ebb 29 c# c++ notepad++ dllexport
在VS C/C++中你可以使用extern "C" __declspec(dllexport) -function declaration-
.
如何在C#dll中完成此操作?C#代码是否与上面的代码相同?
编辑:更多信息
我正在尝试为Notepad ++创建一个插件,我想使用C#,但到目前为止我看到的常见方法是使用传统的C++代码和上面的调用来导出Notepad ++期望导入的一些函数和呼叫.有一个使用C#的示例应用程序,但这仍然需要一个加载器DLL,我从下面的评论/答案中假设是C#的唯一方法.
hB0*_*hB0 31
非托管出口
https://sites.google.com/site/robertgiesecke/Home/uploads/unmanagedexports
它是如何工作的?
创建一个新的类库或继续使用现有的类库.然后添加UnmanagedExports Nuget包.
这几乎是所有需要的设置.
现在,您可以编写任何类型的静态方法,
[DllExport]
使用本机代码进行装饰并使用它.
它的工作方式与DllImport类似,因此您可以使用自定义参数/结果的编组MarshalAsAttribute
.在编译期间,我的任务将修改IL以添加所需的导出...
Ben*_*igt 19
我以前见过人们这样做,但它需要ildasm,添加MSIL .export
指令,然后重新组装. 名为的程序dll_tool
可以为您执行这些步骤.
如果要构建具有本机和托管导出的混合模式DLL,则应使用专门为此目的而设计的C++/CLI.
是的,可以从C#dll导出函数,就像C++一样!您需要一些辅助非托管导出(DllExport for .Net)的帮助来促进此过程,或者从类似的方法(如将C#/ VB.NET中的函数导出为本机代码).
有关使用Robert Giesecke的C#非模板化导出模板将C#dll导出到与C++有很多相似之处的遗留应用程序(Metatrader),请参阅将C#DLL导出到Metatrader Build 600+的代码.
此外,您可能会发现Native和.NET Interopability很有趣,尽管它主要用于从.NET中访问本机代码而不是相反.