Как позвонить в 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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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