Доступ к библиотеке C # из кода VC ++ - PullRequest
1 голос
/ 04 октября 2011

У меня есть приложение Windows Form, написанное на VC ++. Я хочу изменить нажатие кнопки в этом приложении (приложение WInform в VC ++), чтобы включить функцию, написанную на C #. Каковы возможные способы сделать это.

1 Ответ

1 голос
/ 11 октября 2011

Вызов сборки C # без компиляции с C ++ / CLI довольно сложен.Вот некоторые из идей, которые у меня были:

a) Создание dll-оболочки для смешанных сборок (смешанные сборки содержат как собственный код, так и управляемый код).Добавьте ссылку на свою сборку C #, затем создайте в своей dll функции, которые вызывают код C # через C ++ / CLI, затем определите точки входа dll (__declspec (dllexport)) для этих функций.Теперь вы можете ссылаться на dll, так как он предоставит родной интерфейс, понятный C ++, а внутри dll может вызывать ваш код C #.(Запоздалая мысль: Вы, вероятно, можете скомпилировать это в .lib, это было бы проще, чем в DLL.)

Пошаговое руководство. Создание и использование статической библиотеки

b)Используйте Mono для вызова сборки C #.Mono имеет C API, который вы можете использовать для загрузки и использования управляемых сборок без использования c ++ / CLI.Это то, что я бы сделал, если C ++ / CLI не является опцией.

Внедрение Mono

c) Если ваша функция имеет относительно простую сигнатуру ввода / вывода (нетбольшие объекты и т. д.) вы можете рассмотреть возможность компиляции вашей функции C # в исполняемый файл и использовать стандартный ввод / вывод для вызова функции.Вы должны будете нести входные аргументы и выходные данные в виде текста.Затем заставьте C ++ запустить исполняемый файл, передать ему некоторый ввод и прочитать вывод.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...