Используя встроенный Mono, я пытаюсь выполнить очень простую функцию C изнутри C#.DllImport __Internal не работает, несмотря на правильную настройку функции
Это функция в 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