Прагма и в том числе заголовки / библиотеки - PullRequest
0 голосов
/ 08 октября 2009

VS C ++ 2008

Я просто работаю над учебником по DirectX.

В исходном коде была эта строка:

#pragma comment (lib, "d3d9.lib")

Когда я скомпилировал все связанное нормально.

Однако я закомментировал эту строку и попытался сам включить заголовок и библиотеку в свойствах, например:

C/C++ - General
Additional include directories: "C:\Program Files\Microsoft DirectX SDK (August 2009)\Include"

Linker - General
Additional library directories: "C:\Program Files\Microsoft DirectX SDK (August 2009)\Lib\x64"
Linker - Input: d3d9.lib

Однако я получил эту ошибку компоновщика:

1>main.obj : error LNK2019: unresolved external symbol _Direct3DCreate9@4 referenced in function _initD3D

Однако, когда я просто использовал прагму, я не получил никаких ошибок компоновщика. Только когда я пытаюсь включить их в свойства, как указано выше.

Какая реальная разница в использовании прагмы и включении заголовков / библиотек с использованием соответствующих свойств?

Большое спасибо,

Ответы [ 2 ]

3 голосов
/ 08 октября 2009

сначала, #pragma comment (lib) - это просто конфигурация компоновщика

во-вторых, SDK должен быть в пути, поэтому не устанавливайте дополнительные каталоги библиотеки (вы можете переопределить его с неверной версией), просто добавьте d3d9.lib к входу компоновщика.

1 голос
/ 08 октября 2009

Насколько я знаю, разницы нет. Прагма lib просто говорит компоновщику искать определенную библиотеку по имени.

Кроме того, поскольку путь не указан в прагме, компоновщик использует текущие пути lib для вашего проекта. Старайтесь не добавлять пути к параметрам компоновщика (по умолчанию DX SDK добавляет пути к любой установленной Visual Studio, напрямую изменяя глобальные пути Visual Studio. См. Инструменты / Параметры / Проекты и решения / Каталоги VC ++ / Показать каталоги для файлов библиотеки)

Некоторые вещи для проверки:

  • вы действительно строите для x64
  • ваш путь действительно указывает на DX SDK (он установлен в Program Files (x86), если вы используете x64)
  • проверить, нет ли других предупреждений компоновщика
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...