对于某些跨平台程序,这也就意味着只能在windows下使用了
不过最近.Net开源或许以后可以跨平台
之前花了一些时间研究COM方式调用,太繁琐不推荐。 COM方式调用总结
后来尝试使用CLR C++,虽然可以用.Net的接口直接载入,但他只是一层C++的皮,最终没能运用在实际项目中。
最后使用MS提供的CLR API接口,完成调用 MSDN CLR接口介绍
=======================================================
有几个注意点:
1.官方一直强调的签名格式static int pwzMethodName (String pwzArgument),并非某个C#特性,而是函数格式必须是带一个string参数返回int型。否则在调用时会报找不到方法。
2.ExecuteInDefaultAppDomain中,dll路径支持相对路径格式,"xx.dll"是可以被识别的。
3.GetRuntime方法获得的.Net版本号,需要去c:/windows/Microsoft.NET下找,64位对应Framework64,普通版对应Framework。如果目标机器没有该文件夹,说明对应版本的.net未安装。那么程序就会报错。版本号第三位数字似乎是死的,应该都是统一的发行版。
4.在创建测试项目时,需要点掉预编译头选项,否则会出现许多莫名其妙的错误。
5.需要在管理员权限下使用
6.类可以是静态类或者非静态,但函数必须是静态函数
参考代码摘自github:
具体上代码
C#
using System; using System.Collections.Generic; using System.IO; using System.Text; namespace ClassLibrary1 { public class Class1 { public static int EntryPoint(string arg) { File.AppendAllText("C:/xx.txt", "qweqwe"); return 0; } } }