По какой-то причине, когда я объявляю переменную directx как extern, я получаю ошибку компоновки.
Пример:
В некоторых заголовочных файлах:
extern ID3D10EffectMatrixVariable* pWorldVariable;
В каком-то другом файле cpp, куда я включаю .h файл, содержащий pd3dDevice:
pWorldVariable = NULL;
Появится сообщение об ошибке, похожей на это:
2> main.obj: ошибка LNK2001: неразрешенный внешний символ "struct ID3D10EffectMatrixVariable * pProjectionVariable" (? PProjectionVariable @@ 3PAUID3D10EffectMatrixVariable @@ A)
2> C: \ Users \ steve \ documents \ visual studio 2010 \ Projects \ Shyr \ Debug \ Shyr.exe: фатальная ошибка LNK1120: 1 неразрешенный внешний текст
В ту минуту, когда я убираю декларацию extern
, она компилируется как шарм. Конечно, я на самом деле хочу сослаться на несколько переменных, таких как цепочка подкачки, устройство, представление цели и т. Д. Из библиотеки, над которой я работаю. Кто-нибудь знает, что случилось?
(Кроме того, ДА, заявлено только один раз)
Просто чтобы доказать, что проблема изолирована от переменных DirectX, я создал внешнюю переменную "george" и инициализировал ее значением 4. Затем я сослался на нее в другом месте и изменил значение. Скомпилировано просто отлично.