P / Invoke c # и собственный переполнение стека

Мой c # действительно плох, и я получу книгу или кое-что, чтобы улучшить это позже. Прямо сейчас у меня есть графический интерфейс в c # wpf и библиотека dll в нативном c ++. Все учебники, которые я вижу в интернете для p / invoke, не содержат классов.

Вот как мой код выглядит в C ++:

//Dostuff.h

class foo {
__declspec(dllexport) void dostuff();
}

Как бы я пошел о вызове DLL из C #? Заранее спасибо.

2

Решение

Библиотека C ++ без оболочек часто бесполезна вне компилятора C ++, который ее построил. C # не сделает использование такой библиотеки легким для вас … и даже если вам удастся это сделать, все может сломаться разными интересными способами.

У вас есть два относительно безопасных варианта:

  • Экспорт набора extern "C" функции оболочки в вашей библиотеке. Вы берете указатель на объект, который хотите использовать, и вызываете функцию для этого объекта. Если вы пойдете по этому пути, он будет как можно ближе к универсально совместимым; любой язык, который может вызывать функции C, сможет использовать библиотеку.
  • Если вы используете Visual C ++, вы можете сделать что-то подобное специально для .net. Напишите оболочку на C ++ / CLI, которая компилируется для .net, но перенаправляет вызовы в собственную библиотеку.
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]