Общая картина: я пытаюсь писать код как на C#, так и на C++, чтобы добиться хорошего баланса между производительностью и производительностью. Это не по причинам повторного использования кода; Я просто хочу иметь возможность писать новый код на родном C++, когда мне это удобно, не ввязываясь во все его ужасы.
У меня есть решение с 4 проектами:
- Графический интерфейс: С# WPF-интерфейс
- Logic_Cs: C# DLL, высокоуровневая эталонная реализация игровой логики.
- Logic_CLI: CLI DLL, интерфейс между управляемым и неуправляемым кодом.
- Logic_Cpp: библиотека C++ с собственной реализацией
В какой-то момент все это работало просто отлично. В моем проекте с графическим интерфейсом я мог переключаться между реализацией C#/C++, просто используя пространство имен из соответствующей библиотеки DLL.
Затем я, видимо, что-то изменил, и теперь я не могу заставить пространство имен в проекте Logic_CLI распознаваться в проекте GUI, хотя пространство имен Logic_Cs по-прежнему работает нормально.
Да, я добавил правильные ссылки, установил зависимости, перестроил И воссоздал всю структуру решения с нуля; ничего не помогает.
Я заметил, что C# DLL строится в папку в собственном каталоге проекта, а CLI строится в каталог решения; но приложение с графическим интерфейсом, похоже, все равно ищет DLL в правильном каталоге, и я не получаю никаких жалоб на DLL; он просто отказывается импортировать из него пространство имен.
Раньше, когда все это работало, я ничего явно не экспортировал из CLI DLL; я не делаю этого и для C# DLL. Это должно «просто работать», нет?