Я использую Visual Studio 2008 для создания решения с двумя проектами: консольное приложение C # и C ++ DLL. Я хочу, чтобы приложение для вызова функции из DLL с помощью P / Invoke. Поэтому я пытаюсь добавить DLL в качестве ссылки на приложение C #. Но когда я пытаюсь выполнить команду «Добавить ссылку», Visual Studio не позволит мне сделать это, пока я не установлю свойство / clr в dll (в разделе «Свойства конфигурации: Общие»). Теперь я подумал, что P / Invoke может обрабатывать простые старые win32-библиотеки. Действительно, если я создаю свою dll без / clr и просто копирую ее вручную в bin / Debug, тогда приложение работает нормально. Так почему / clr требуется добавить DLL в качестве ссылки? И если VS не позволит мне добавить его, есть ли какой-нибудь (чистый) обходной путь, чтобы мое приложение нашло dll?
Я вижу, что у кого-то здесь была похожая проблема (хотя с сторонним dll):
Невозможно добавить ссылку на DLL на VS 2008 Ответ, который он получил, заключался в создании оболочки. Но в этом нет необходимости, так как приложение может нормально использовать dll; это просто шаг Добавить ссылку, который не работает. И кроме того, не будет ли в коде-обертке ссылка на dll, что вызовет ту же проблему, что и раньше? Мне бы очень хотелось получить ответ, который вообще не требует написания обертки.