Как позвонить в STD :: функционировать в рамках неуправляемого C ++ DLL из C#?C++

Программы на C++. Форум разработчиков
Anonymous
Как позвонить в STD :: функционировать в рамках неуправляемого C ++ DLL из C#?

Сообщение Anonymous »

Ищу некоторые указатели (без каламбура ...) относительно лучшего подхода для этого сценария. Функция: < /p>
typedef std::function SCallback;

__declspec(dllexport) int StartS( SCallback fnS );
< /code>
Я пытаюсь назвать это из приложения консоли C#, и это то, что я делаю: < /p>
[DllImport("SeqLib.dll", EntryPoint = "?StartS@SApi@@YAKV?$function@$$A6AXIIPBD@Z@std@@@Z", CharSet = CharSet.Auto, CallingConvention = CallingConvention.Cdecl)]
public static extern int StartS(DCallback cb);

public delegate void DCallback(int msgType, int size, IntPtr value);

public static void MessageReceived(int msgType, int size, IntPtr value)
{
return 0;
}

DCallback callback = new DCallback(MessageReceived);

StartS(callback);
< /code>
Запуск этого дает: < /p>
System.AccessViolationException: "Attempted to read or write protected memory. This is often an indication that other memory is corrupt."
< /code>
Исключение в стороне, есть ли что -то не так с основным подходом выше? Может ли кто -нибудь посоветовать по правильному подходу к вызову экспортируемой функции, которая имеет параметр функции std :: function, как указано выше?
Заранее.

Подробнее здесь: https://stackoverflow.com/questions/794 ... dll-from-c

Вернуться в «C++»