Использование управляемого C ++ dll из C # - PullRequest
5 голосов
/ 02 февраля 2009

Я создал DLL, используя управляемый C ++. Сейчас я пытаюсь использовать его из C #. Я добавил объект в ссылки проекта. Обозреватель объектов корректно показывает объект в dll, путь к dll в обозревателе объектов соответствует фактическому пути.

Однако, когда я запускаю программу C #, она жалуется:

Необработанное исключение: System.IO.FileNotFoundException: указанный модуль мог не найден (Исключение из HRESULT: 0x8007007E)

Есть идеи, что еще нужно сделать?

Спасибо.

Ответы [ 4 ]

6 голосов
/ 02 февраля 2009

Я думаю, что вам не хватает других сборок или ссылок dll в вашей управляемой сборке C ++.

0 голосов
/ 17 августа 2011

Убедитесь, что сборка c ++ находится в той же папке, что и ваша программа на c #. Его следует скопировать автоматически, если для свойства «Копировать локально» задано значение «истина» (для ссылки на dll c ++ в приложении c #).

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

Другая вероятная причина - проблема с dll-файлами времени выполнения MSVC. посмотрите, жалуется ли DependencyWalker на отсутствующие файлы MSVCR * .dll, MSVCP * .dll и т. д. ...

0 голосов
/ 02 февраля 2009

Выполняете ли вы приложение в выпуске на машине без установленной VS?

Я спрашиваю только потому, что столкнулся с подобной проблемой: Библиотека смешанного режима и зависимости ЭЛТ - HELP

Если вы прокрутите вниз до моего ответа, вы увидите, что я сделал, что помогло мне.

0 голосов
/ 02 февраля 2009

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

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