Вызов C # dll из неуправляемого приложения C ++ без COM - PullRequest
5 голосов
/ 17 декабря 2010

Есть ли способ вызвать c # dll из неуправляемого приложения c ++ без использования COM?

Ответы [ 4 ]

5 голосов
/ 17 декабря 2010

Вы можете сделать это, используя Reverse P/Invoke - пример и обсуждение здесь .

2 голосов
/ 17 декабря 2010

На самом деле можно разобрать, изменить IL и собрать его с помощью экспортированных функций. Я испортил это несколько лет назад и создал приложение, которое будет разбирать dll, предоставлять список функций, которые потенциально могут быть экспортированы, что позволит пользователю выбрать их, затем переписать IL и собрать все заново. Тогда я мог бы напрямую вызывать в dll из неуправляемого кода ... или p-вызывать в dll из управляемого кода (не очень практично, но тем не менее интересно).

Конечно, есть причина, по которой это не поддерживается в самих языках .net (даже если это поддерживается в MSIL). Я бы не использовал это в производстве:

Мертвая ссылка: http://www.csharphelp.com/2007/03/exporting-managed-code-as-unmanaged/

Wayback Machine: https://web.archive.org/web/20140213030149/http://www.csharphelp.com/2007/03/exporting-managed-code-as-unmanaged/

1 голос
/ 05 января 2011

Возможно, я немного опоздал, но отметьте this out.

Используя эту маленькую задачу msbuild, вы можете создать библиотеку C #, которая будет вызываться так, как если бы она была встроенной,(например, напишите плагины для приложений, которые требуют, чтобы они были собственными dll)

Да, и не забудьте использовать шаблон проекта , который настроит все для вас.

0 голосов
/ 17 декабря 2010

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

Вызов кода C # из C ++

...