Регистрация
27 Дек 2013
Сообщения
82
Репутация
0
Спасибо
0
Монет
0
#include

int main()

{

sf::RenderWindow window(sf::VideoMode(200, 200), "SFML works!");
return 0;

}

вот ошибка

1>------Построение начато: проект: fgf, Конфигурация: Debug Win32 ------
1>tect.obj : error LNK2028: ссылка на неразрешенную лексему (0A000408) "public: __thiscall sf::VideoMode::VideoMode(unsigned int,unsigned int,unsigned int)" (??0VideoMode@sf@@$$FQAE@III@Z) в функции "int __cdecl main(void)" (?main@@$$HYAHXZ)
1>tect.obj : error LNK2028: ссылка на неразрешенную лексему (0A000409) "public: __thiscall sf::String::String(char const *,class std::locale const &)" (??0String@sf@@$$FQAE@PBDABVlocale@std@@@Z) в функции "int __cdecl main(void)" (?main@@$$HYAHXZ)
1>tect.obj : error LNK2028: ссылка на неразрешенную лексему (0A00040A) "public: __thiscall sf::RenderWindow::RenderWindow(class sf::VideoMode,class sf::String const &,unsigned int,struct sf::ContextSettings const &)" (??0RenderWindow@sf@@$$FQAE@VVideoMode@1@ABVString@1@IABUContextSettings@1@@Z) в функции "int __cdecl main(void)" (?main@@$$HYAHXZ)
1>tect.obj : error LNK2028: ссылка на неразрешенную лексему (0A00040B) "public: virtual __thiscall sf::RenderWindow::~RenderWindow(void)" (??1RenderWindow@sf@@$$FUAE@XZ) в функции "int __cdecl main(void)" (?main@@$$HYAHXZ)
1>tect.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: virtual __thiscall sf::RenderWindow::~RenderWindow(void)" (??1RenderWindow@sf@@$$FUAE@XZ) в функции "int __cdecl main(void)" (?main@@$$HYAHXZ)
1>tect.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: __thiscall sf::RenderWindow::RenderWindow(class sf::VideoMode,class sf::String const &,unsigned int,struct sf::ContextSettings const &)" (??0RenderWindow@sf@@$$FQAE@VVideoMode@1@ABVString@1@IABUContextSettings@1@@Z) в функции "int __cdecl main(void)" (?main@@$$HYAHXZ)
1>tect.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: __thiscall sf::VideoMode::VideoMode(unsigned int,unsigned int,unsigned int)" (??0VideoMode@sf@@$$FQAE@III@Z) в функции "int __cdecl main(void)" (?main@@$$HYAHXZ)
1>tect.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: __thiscall sf::String::String(char const *,class std::locale const &)" (??0String@sf@@$$FQAE@PBDABVlocale@std@@@Z) в функции "int __cdecl main(void)" (?main@@$$HYAHXZ)
1>c:users1234documentsvisual studio 2010ProjectsfgfDebugfgf.exe : fatal error LNK1120: 8 неразрешенных внешних элементов
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========
 
ну например, ты указал функцию VideoMode() программа его видит, так как он описан в include файле. НО программа не знает что эта функция из себя представляет. есть только описание названия и аргументов. например, если добавишь прототип функции (описание) сверху main() void ololo( void ); и потом в main() вызовешь эту функцию то выйдет такая же ошибка void ololo( void ); int main(int argc, _TCHAR* argv[]){ ololo(); //ошибка error LNK2001: unresolved external symbol "void __cdecl ololo(void)" (?ololo@@YAXXZ) return 0 } если у функции будет тело { } то всё будет в порядке ВООООТ так как ты используешь стороннюю библиотеку, все функции сохранены в .DLL файл, либо в .LIB файл, и нужно либо загружать DLL либо подключать LIB. в чём различия между DLL и LIB DLL идёт как отдельный файл. В нём есть нужные функции. Эти функции могут использоваться многими программами. LIB файл содержит все функции. Но эти функции ВСТРАИВАЮТСЯ в твою программу. Они сохраняются внутри твоей EXE. При создании DLL создаётся ещё и LIB файл для автоматической линковки, чтобы программа знала из какой DLL какие функции загружать.. Функции из DLL можно загружать прямо без LIB, но это слишком спецефично. Чтобы использовать DLL, (например игровой движок, или аудио и прочее), нужно использовать LIB файл для линковки. Когда мы указали нужную lib библиотеку, при компиляции, после успешной трансляции, включается программа линковщик. Она указывает связи между твоей программой где вызываются функции и библиотекой, где эти функции реализованы. Ведь, уже всё заранее люди написали, и эти функции скомпилированы в библиотеки. Остаётся только добавить эти функции в программу. Чтобы программа знала о них, создают include .h файл в котором хранятся ТОЛЬКО описания. У стандартной библиотеке тоже всё заранее создано, все функции типа abs() sqrt(), только нам не нужно ничего указывать, всё само добавляется. А для сторонних библиотек нужно добавить lib файл. Посмотри в папке SFML папку lib. У библиотек ДОЛЖНЫ БЫТЬ 2 варианта lib библиотек. Для 32 битной программы и для 64 битной, x86 и x64 соответственно. По этому, в той программе где ты создаешь программу, в проекте добавь для линковщика информацию, дополнительную директорию, в которой хранятся нужные lib файлы (либо 32 либо 64 бит), и потом подключи нужный lib файл #pragma comment(lib, "имя. lib") посмотри в папке SFML какие lib файлы есть. почитай документацию, посмотри примеры.
 
Назад
Сверху