Войти
ПрограммированиеFAQОбщее

Ошибка: error LNK2001: unresolved external symbol... Почему мои программы не хотят линковаться?

Причина следующая: Вы забыли подключить к проекту необходимые библиотеки (*.lib файлы).

В Visual C++ это делается в Project->Settings, вкладка Link.

Для Direct3D 8:

error LNK2001: unresolved external symbol _Direct3DCreate8@4
  необходимо подключить d3d8.lib

error LNK2001: unresolved external symbol _D3DX...
  необходимо подключить d3dx8.lib

Для Direct3D 9:

error LNK2001: unresolved external symbol _Direct3DCreate9@4
  необходимо подключить d3d9.lib

error LNK2001: unresolved external symbol _D3DX...
  необходимо подключить d3dx9.lib

Для OpenGL:

error LNK2001: unresolved external symbol __imp__gl...
error LNK2001: unresolved external symbol __imp__wgl...
  необходимо подключить opengl32.lib

error LNK2001: unresolved external symbol _glul...
  необходимо подключить glu32.lib

Но проще всего подключить их при помощи макроса (для Microsoft Visual Studio всех версий):

Для Direct3D 8:

#pragma comment (lib, "d3d8.lib")
#pragma comment (lib, "d3dx8.lib")

Для Direct3D 9:

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

Для OpenGL:

#pragma comment (lib, "opengl32.lib")
#pragma comment (lib, "glu32.lib")

так же причина может быть в том, что вы реализуете шаблонные функции или методы шаблонных классов в .cpp файлах.
так как шаблон инстанцируется в месте его использывания, то он должен быть определен еще до точки инстанцирования. поэтому его следует поместить  в хидер вместе с описанием, подробней смотри здесь - http://www.gamedev.ru/faq/?id=30

12 августа 2005 (Обновление: 30 июня 2007)