2014-01-24 3 views
0

Я использую Visual Studio 2013 и SDL 2.0.1, и по какой-то причине, я получаю целую кучу ошибок, похожее на это:SDL ошибок Visual Studio 2013

Error 2 error LNK2019: unresolved external symbol _SDL_DestroyWindow referenced in function "public: virtual __thiscall Display::~Display(void)" ([email protected]@[email protected]) c:\Users\Toby\documents\visual studio 2013\Projects\OpenGLTutorialProject\OpenGLTutorialProject\Display.obj OpenGLTutorialProject 

шаги, которые я взял на link SDL к моей программе: -Создал папку с именем include и поместил все файлы в SDL/include в папку include моего проекта. -Создал папку lib для моего проекта и поместил в нее все содержимое SDL/lib. -Согласно Свойства -> Linker -> Общие сведения -> Дополнительные каталоги библиотек и указали его на мою папку lib в проекте. -Согласно Свойства -> C/C++ -> Общие -> Дополнительные каталоги ввода и укажите путь к моей включенной папке в моем проекте. -Went к Свойства -> Linker -> Вход-> Дополнительные зависимости и напечатал следующее:

glew32.lib 
glew32s.lib 
SDL2.lib 
SDL2main.lib 
SDL2test.lib 
OpenGL32.lib 

Да, я включил GLEW, который работает отлично и ссылки.

Когда я печатаю это:

#include<SDL2/SDL.h> 

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

Error 12 error LNK1120: 11 unresolved externals c:\users\toby\documents\visual studio 2013\Projects\OpenGLTutorialProject\Debug\OpenGLTutorialProject.exe OpenGLTutorialProject 

Я искал и, кажется, SDL используется, чтобы иметь проблемы с визуальной студии 2013, но затем ошибки были сглажены. Я также уверен, чтобы настроить мой основной метод следующим образом:

int main(int argc, char **argv) 

Потому что я слышал SDL придирчив, когда дело доходит до аргументов в основном методе. Может ли кто-нибудь сказать мне, что я сделал неправильно?

+0

Я бы очень признателен за помощь ... –

+0

Кстати, у вас не должно быть 'glew32.lib' и' glew32s.lib' и в качестве зависимостей для вашего программного обеспечения. Один (glew32) - это библиотека импорта DLL, а другая - статичная (glew32s). Если вы '#define GLEW_STATIC' перед включением' glew.h' (и я предлагаю вам, так как ссылка на DLL не дает никакой реальной выгоды) ссылку на 'glew32s.lib', в противном случае ссылаться на' glew32.lib' и помнить для распространения GLEW DLL с вашим программным обеспечением. –

+0

Извините, я только начал следовать руководству, которое я нашел. Я, честно говоря, очень новичок в C++, хотя и не новичок в программировании @ AndonM.Coleman –

ответ

2

Я полагаю, что вы используете неправильный путь или ссылаетесь на неправильную версию библиотек для выбранной вами платформы? т.е. x86 или x64?

Если ваш компилятор настроен на 32-разрядный, вам нужно использовать библиотеки x86, а не x64.

Кроме того, Additional Library Directories необходимо указать в каталоге, где находятся файлы lib, в SDL2 каталог lib имеет два подкаталога для x86 и x64 соответственно. Если вы скопировали все из каталога SDL lib, файлы, возможно, оказались там, где их не должно быть.

+0

Я только скопировал x64 версию файлов, так что это не проблема. Как узнать, какой у меня тип компилятора? Я использую Visual Studio (очевидно), и я нахожусь на компьютере x64. Означает ли это, что у меня есть компилятор x64? –

+0

@ opiop65 И у вас есть VS, чтобы использовать конфигурацию X64 в диспетчере конфигурации? Если я правильно помню, он по умолчанию принимает значение x86 (Win32).Целевая платформа не привязана к вашей версии ОС, VS может компилироваться как для X64, так и для X86, и ваш компьютер может запускать оба. Попробуйте перейти на библиотеки X86 SDL в каталоге lib, и вы, скорее всего, будете в порядке. – jpw

+0

Хорошо, спасибо! Я попробую это через минуту и ​​посмотрю, как это происходит. –