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 で正常にコンパイルされ、正常に動作します。