C # / C ++ в том же решении - DllImport не находит DLL - PullRequest
8 голосов
/ 28 ноября 2011

У меня есть решение с проектом C ++ dll и проектом C #, которое его использует. Проблема в том, что путь сборки проекта c ++ находится в папке решения, а c # находится в папке проекта bin (каждый вложен в debug / release), поэтому DllImport не находит их.
Есть ли стандартный способ исправить это?

1 Ответ

6 голосов
/ 28 ноября 2011

Способ, которым вы должны это сделать, - установить путь сборки для обоих проектов в один и тот же каталог 'bin' ... предпочтительно один для решения, а не для проекта. Затем просто соберите все проекты в одну папку. Вы можете изменить это в настройках проекта.

Другой метод - использовать шаг после сборки для приложения C ++, которое копирует DLL в папку проекта C #. Таким образом, вы на самом деле не меняете пути. Вы просто копируете DLL. Но будьте осторожны, потому что, когда вы чистите проект файла C ++, у вас может остаться копия в каталоге bin проекта C #, что заставит вас почесать голову о том, почему все происходит не так, как ожидалось.

В качестве альтернативы, вы можете развернуть C ++ DLL по системному пути (также как часть шага после сборки), но у вас будут те же проблемы, как указано выше.

Для отладки я рекомендую их в указанном порядке.

...