Надеюсь, это бездумно простой вопрос, но он показывает мой недостаток опыта в C ++. Я программист на C #, и в прошлом я проделал большую работу с P / Invoke с другими библиотеками C ++ / C. Тем не менее, на этот раз я решил написать оболочку C ++ dll (неуправляемую) сам, а затем вызываю мою оболочку 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 ++, для которого я просто не знаю синтаксис.