我正在尝试使用 C# CSharpCodeProvider 即时编译非托管 dll。编译成功,但是dll不起作用。这是我正在尝试做的事情:
provOptions.Add("CompilerVersion", "v4.0");
var options = new CompilerParameters();
options.GenerateExecutable = false;
options.CompilerOptions = "/platform:x86 /target:library";
options.ReferencedAssemblies.Add("RGiesecke.DllExport.Metadata.dll");
var provider = new CSharpCodeProvider();
string sourceFile = "tmp2.cs";
CompilerResults cr = provider.CompileAssemblyFromFile(options, sourceFile);
这里是 C# tmp2.cs:
using RGiesecke.DllExport;
using System.Runtime.InteropServices;
using System;
using System.Text;
class Test
{
[DllExport("add", CallingConvention = CallingConvention.Cdecl)]
public static int TestExport(int left, int right)
{
return left + right;
}
}
我究竟做错了什么?CSharpCodeProvider 不支持 Dllexport 吗?tmp2.cs 在 MS VS C# 2012 中编译成功并且工作正常。