Надеюсь, это безумно простой вопрос, но он показывает, что я недостаточно разбираюсь в C ++. Я программист на C #, и в прошлом я много работал с P / Invoke с другими библиотеками C ++ / C. Однако на этот раз я решил сам написать dll-оболочку C ++ (неуправляемую), а затем вызываю свою dll-оболочку из C #.
Проблема, с которой я сразу столкнулся, заключается в том, что я не могу определить функцию C ++, которую можно найти с помощью p / invoke. Я не знаю, каков синтаксис для этого, но вот что я пока пытаюсь:
extern bool __cdecl TestFunc()
{
return true;
}
Изначально у меня просто было это, но тоже не сработало:
bool TestFunc()
{
return true;
}
А на стороне C # у меня есть:
public const string InterfaceLibrary = @"Plugins\TestDLL.dll";
[DllImport( InterfaceLibrary, CallingConvention = CallingConvention.Cdecl,
EntryPoint = "TestFunc" ), SuppressUnmanagedCodeSecurity]
internal static extern bool TestFunc();
Все компилируется, но когда я выполняю этот вызов C # p / invoke, я получаю System.EntryPointNotFoundException: невозможно найти точку входа с именем TestFunc в DLL Plugins \ TestDLL.dll.
Конечно, это должно быть что-то невероятно простое со стороны C ++, синтаксис которого я просто не знаю.