埋め込まれたMonoを使用して、C#から非常に単純なC関数を実行しようとしています。DllImport __正しい関数の設定にもかかわらず、内部関数が働いていません
これは(グローバルスコープで)C++コード内の関数である:
extern "C"
{
static int __attribute__((noinline)) dllImportTest()
{
return 66;
}
}
これは、C#のコードです:
[DllImport("__Internal", EntryPoint="dllImportTest")]
public static extern int dllImportTest();
public void testCFunctions()
{
int dllImport = dllImportTest();
System.Console.Write("Got dllImport: " + dllImport + "\n");
}
そして、これは私が取得エラーです:
System.EntryPointNotFoundException: dllImportTest
at (wrapper managed-to-native) MonoGlue.ATestClass:dllImportTest()
at MonoGlue.ATestClass.testCFunctions() [0x0000a] in <9effaf2265b34fbcb9a10abd58c42ed7>:0
私は例と同様の問題を見てきましたが、何がうまくいかないのか見当たりません。 C関数が最適化されないことを確認するために、私はC++コードでそれを実行します。
私はあなたが見ることができるように、インライン展開を防ぐことさえできます。
しかし、まだ運がありません。まだ私が紛失しているものがなければならない。
dll自体は見つからないようです。あなたのアプリケーションでdllを見つけることができますか? https://msdn.microsoft.com/en-us/library/system.entrypointnotfoundexception%28v=vs.110%29.aspx?f=255&MSPPError=-2147217396 – Mat
"__Internal"は外部DLLではないことを意味しますが、環境埋め込みC#:) – TheSHEEEP
http://stackoverflow.com/questions/15643549/why-dllimport-doesnt-work-with-internal – Mat