Диалоговое окно «Добавить ссылку» может работать только для библиотек DLL, которые содержат метаданные (управляемый код) или библиотеки типов (сервер COM).Ваша DLL не соответствует этому счету, вы можете использовать только атрибут [DllImport] в коде C #, чтобы использовать маршаллер P / Invoke для вызова неуправляемой точки входа DLL.
Это может , а не будь нативный класс C ++, как вы пытаетесь это сделать, у управляемого кода нет надежного механизма для выделения неуправляемой памяти и вызова конструктора (и деструктора) нативного класса C ++.Если не считать сложности поиска кода конструктора и деструктора, маршаллеру P / Invoke нет способа узнать размер объекта.Язык C ++ не генерирует метаданные, необходимые для того, чтобы знать эту необходимую информацию.
Если вы хотите использовать P / Invoke, тогда напишите простую глобальную функцию, украшенную extern "C", __declspec (dllexport) и(необязательно) __stdcall.
Если вы хотите экспортировать класс C ++, тогда единственным способом является использование языка C ++ / CLI и создание оболочки «ref class» для собственного класса C ++.
ИлиВы могли бы написать COM класс, универсальный клей в Windows.Очень хорошо поддерживается .NET, вероятно, это не то, что вам нужно, если вы никогда раньше не писали COM-код.ATL - лучший способ начать работу.