Unmanaged Exports生成Dll时的一些疑难杂症疗法

Unmanaged Exports是一个将.NET编写的静态托管函数导出成可供C/C++等直接调用的非托管函数的工具。

已经在上篇文章介绍过了,这里不再复述。

限制

你不能导出在同一个class中的重载函数,即便你指定了不同的导出名称。
另一个限制是你不能递归调用导出函数。

生成平台选择一个具体的平台(不能是AnyCPU否则该工具不生效),生成解决方案即可。
该工具最新版只支持vs2008以后的vs,因为vs2008及以前的版本不支持nuget。

工具官方网站及详细说明:
https://sites.google.com/site/robertgiesecke/Home/uploads/unmanagedexports

关于编译错误

该工具在非英文操作系统上可能会出现编译错误的问题,具体表现如下:
http://stackoverflow.com/questions/20288469/cant-create-unmanaged-dll-using-c-sharp-and-robert-gieseckes-unmanaged-exports
image
Unmanaged Exports 编译错误
主要原因是因为非英文操作系统中IL代码中含有非英文注释导致插件工作异常。
虽然将系统语言切换成英文可以解决这个问题,但是这个方法过于麻烦,故本人修改了这个工具,修正了其在非英文操作系统上不能正常使用的问题。

文末附上修改后的文件,解压后将其中的两个dll替换进项目NuGet包中packagesUnmanagedExports.1.2.7 ools文件夹下的两个同名dll即可。
改修正版仅针对Unmanaged Exports 1.2.7版本制作,其它版本未测,可能不能正常使用。
替换完成后即可正常编译:
Unmanaged Exports 编译正常
image

链接: http://pan.baidu.com/s/1nuCeD1f 密码: s28i

原文地址:https://www.cnblogs.com/ixysy/p/6361753.html