Как p / Invoke исполняемый файл c ++ в C # - PullRequest
0 голосов
/ 15 мая 2019

У меня есть приложение C ++, которое является исполняемым файлом g ++, скомпилированным из файла .cpp. Теперь я хочу вызвать методы из этого файла .cpp или / исполняемого файла в моем приложении C #.

Я искал разные способы сделать это и наткнулся на P / Invoke. Тем не менее, похоже, что отправной точкой для приложения C ++, которое нужно п / вызвать, является то, что оно должно быть DLL. У меня нет DLL, а есть исполняемый файл.

Что я могу сделать, чтобы этот код был справочным в моем слое C # P / Invoke?

Ответы [ 2 ]

2 голосов
/ 15 мая 2019

Тем не менее, похоже, что отправная точка приложения C ++ для запуска / вызова - это то, что оно должно быть DLL.У меня нет DLL, и скорее есть этот исполняемый файл.

Для p / invoke вам нужно скомпилировать необходимую вам функциональность в DLL.Вы не можете загрузить исполняемый файл в другой процесс.

Вы можете запустить исполняемый файл в другом процессе и обмениваться данными с ним через некоторую форму IPC.Одним из таких вариантов будет COM-сервер вне процесса.

Однако я подозреваю, что самый простой способ - это скомпилировать код в виде DLL.

0 голосов
/ 16 мая 2019

DLL и EXE являются файлами Windows PE, поэтому любой из них будет работать нормально.Вам просто нужно убедиться, что функции, которые вы хотите вызвать, правильно экспортированы.

Вам нужно будет создать функции-оболочки C для всего, что вы хотите экспортировать.Добавьте extern "C" __declspec(dllexport) к их прототипам и используйте их для вызова желаемого кода C ++.

...