(Это может произойти с опозданием на 3 года, но оно все еще отображается в верхней части поиска Google, и информация по-прежнему действительна сегодня, как и 3 года назад).
Во-первых, да, вы правы, в C ++ / CLI вы не используете файлы .h, КРОМЕ для собственных классов C ++, структур и т. Д.
Первый вопрос, который может возникнуть, - как мне сослаться на мой класс, если я не #include "someheader.h"
файл? Есть два ответа на это: 1) для классов вне вашего проекта; 2) для занятий в рамках вашего проекта.
1) Добавьте ссылку на .DLL (или на другой проект в решении) в вашем .VCPROJ (Общие свойства / структура и ссылки на страницах свойств проекта).
2) Добавьте #using otherclass.obj
, правильно #using для объектного файла!
В вашем проекте, если у каждого класса есть собственный исходный файл, когда вы хотите сослаться на него в другом классе, мы используем #using "a_compiled_file"
, который может быть файлом .dll или .obj.
На страницах свойств проекта в разделе C / C ++ / General вы увидите: Resolve #using References, просто добавьте строку MACRO $(IntDir)
. Это разрешает промежуточный каталог для скомпилированного исходного кода.
Компилятор считывает метаданные в файле .obj (точно так же, как метаданные в файле .dll) и использует их для всей необходимой информации, без заголовочного файла .h!
Мы делаем это, потому что компилятор C ++ / CLI слишком туп, чтобы запоминать наши классы в одном проекте, как это делает компилятор C #.
ПРИМЕЧАНИЕ: вы можете запустить нарушения совместного использования при использовании $(IntDir)
, в этом случае предварительно скомпилируйте файлы и поместите их в их собственную директорию. Компилятору нужны ТОЛЬКО метаданные, поэтому, если вы не меняете структуру класса (подумайте о .h), его не нужно каждый раз компилировать.