Если у вас есть обычная библиотека C ++ (не-CLI), вам следует избегать включения опции компиляции 'CLI' для этой библиотеки по соображениям производительности.
Вместо этого рекомендуется создать библиотеку, в которой есть только классы-обертки. Эта библиотека, конечно, будет C ++ / CLI и создаст сборку, на которую могут ссылаться обычные библиотеки .Net.
Так что это, вероятно, то, о чем говорил совет - создайте библиотеку оболочки для ваших оболочек CLI
- дополнение к обновленному вопросу
Управляемый класс C ++ / CLI не должен содержать неуправляемый код, поскольку он / не может / содержать много типов неуправляемого кода.
Например, класс C ++ / CLI не может иметь никаких неуправляемых переменных-членов, которые не являются ссылками или указателями. Это связано с тем, что сборщик мусора во время выполнения .Net может решить в любой момент поместить объект в другое место в памяти (по этой причине вам нужно закрепить память и т. Д.). Если GC решит переместить ваши собственные объекты C ++ в какое-то другое место в памяти, это потенциально лишит законной силы любые указатели, которые у вас есть на этот объект. Это явно плохо.
C ++ / CLI - отличный язык. Однако, если вы используете его, вам следует либо написать чистый код .Net, либо использовать его как интерфейс между собственным C ++ и .Net. Смешивание моделей памяти в одном классе просто сбивает с толку.