Problem z linkerem
Ostatnio zmodyfikowano 2013-12-20 16:35
oputyk Temat założony przez niniejszego użytkownika |
Problem z linkerem » 2013-12-20 14:38:48 Witam. Mam problem z (jak w temacie) z rozłożeniem programu na pliki. Oto błąd, który mi pokazuje kompilator: Error 1 error LNK2028: unresolved token (0A000504) "public: void __thiscall str::Binary<class Dane>::New(bool)" (?New@?$Binary@VDane@@@str@@$$FQAEX_N@Z) referenced in function "public: void __thiscall OB_Gra::loading(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >)" (?loading@OB_Gra@@$$FQAEXV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z) C:\Users\Kamil i Bartek\Documents\Pulpit\Programowanie\C++\Projekty\Projekty visuala 2013\aplikacje okienkowe\SFML 2.0\Gra - Motor\Gra - Motor\OB_Gra.obj Gra - Motor Error 2 error LNK2028: unresolved token (0A000505) "public: class Dane __thiscall str::Binary<class Dane>::Load(void)" (?Load@?$Binary@VDane@@@str@@$$FQAE?AVDane@@XZ) referenced in function "public: void __thiscall OB_Gra::loading(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >)" (?loading@OB_Gra@@$$FQAEXV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z) C:\Users\Kamil i Bartek\Documents\Pulpit\Programowanie\C++\Projekty\Projekty visuala 2013\aplikacje okienkowe\SFML 2.0\Gra - Motor\Gra - Motor\OB_Gra.obj Gra - Motor Error 3 error LNK2019: unresolved external symbol "public: void __thiscall str::Binary<int>::New(bool)" (?New@?$Binary@H@str@@QAEX_N@Z) referenced in function _main C:\Users\Kamil i Bartek\Documents\Pulpit\Programowanie\C++\Projekty\Projekty visuala 2013\aplikacje okienkowe\SFML 2.0\Gra - Motor\Gra - Motor\Gra - Motor.obj Gra - Motor Error 4 error LNK2019: unresolved external symbol "public: int __thiscall str::Binary<int>::Load(void)" (?Load@?$Binary@H@str@@QAEHXZ) referenced in function _main C:\Users\Kamil i Bartek\Documents\Pulpit\Programowanie\C++\Projekty\Projekty visuala 2013\aplikacje okienkowe\SFML 2.0\Gra - Motor\Gra - Motor\Gra - Motor.obj Gra - Motor Error 5 error LNK2019: unresolved external symbol "public: void __thiscall str::Binary<class Dane>::New(bool)" (?New@?$Binary@VDane@@@str@@$$FQAEX_N@Z) referenced in function "public: void __thiscall OB_Gra::loading(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >)" (?loading@OB_Gra@@$$FQAEXV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z) C:\Users\Kamil i Bartek\Documents\Pulpit\Programowanie\C++\Projekty\Projekty visuala 2013\aplikacje okienkowe\SFML 2.0\Gra - Motor\Gra - Motor\OB_Gra.obj Gra - Motor Error 6 error LNK2019: unresolved external symbol "public: class Dane __thiscall str::Binary<class Dane>::Load(void)" (?Load@?$Binary@VDane@@@str@@$$FQAE?AVDane@@XZ) referenced in function "public: void __thiscall OB_Gra::loading(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >)" (?loading@OB_Gra@@$$FQAEXV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z) C:\Users\Kamil i Bartek\Documents\Pulpit\Programowanie\C++\Projekty\Projekty visuala 2013\aplikacje okienkowe\SFML 2.0\Gra - Motor\Gra - Motor\OB_Gra.obj Gra - Motor Error 7 error LNK1120: 6 unresolved externals C:\Users\Kamil i Bartek\Documents\Pulpit\Programowanie\C++\Projekty\Projekty visuala 2013\aplikacje okienkowe\SFML 2.0\Gra - Motor\Debug\Gra - Motor.exe 1 1 Gra - Motor
A oto kod:
namespace str { class File { protected: std::string name; std::string end; public: File( std::string name_of_file, std::string end_of_name ) : name( name_of_file ) , end( end_of_name ) { } std::string operator =( std::string ); std::string operator +( std::string ); bool operator ==( std::string ); bool operator +=( std::string ); std::string Change_end( std::string ); std::string Get_end(); std::string Change_name( std::string ); std::string Get_name(); }; template < class arg1 > class Binary : public File { protected: arg1 obiekt; public: Binary( arg1 object, std::string name_of_file, std::string end_of_name ) : File( name_of_file, end_of_name ) , obiekt( object ) { } void New( bool = false ); arg1 Load(); void Edit( arg1 ); }; }
#include"stream.h"
bool str::File::operator ==( std::string name_of_file ) { if( name == name_of_file ) return true; else return false; } bool str::File::operator +=( std::string end_of_file ) { if( end == end_of_file ) return true; else return false; } std::string str::File::Change_name( std::string name_of_file ) { if( name_of_file != name ) { remove(( name + end ).c_str() ); name = name_of_file; std::ofstream file(( name + end ).c_str(), std::ios::binary ); file.close(); } return name; } std::string str::File::Change_end( std::string end_of_file ) { if( end_of_file != end ) { remove(( name + end ).c_str() ); end = end_of_file; std::ofstream file(( name + end ).c_str(), std::ios::binary ); file.close(); } return end; } std::string str::File::operator =( std::string name_of_file ) { return Change_name( name_of_file ); } std::string str::File::operator +( std::string end_of_file ) { return Change_end( end_of_file ); } std::string str::File::Get_name() { return name; } std::string str::File::Get_end() { return end; }
template < class arg1 > void str::Binary < arg1 >::New( bool object_in_file ) { std::fstream file(( name + end ).c_str(), std::ios::binary | std::ios::out | std::ios::trunc ); if( object_in_file ) { file.write(( char * ) & obiekt, sizeof( arg1 ) ); } file.close(); } template < class arg1 > arg1 str::Binary < arg1 >::Load() { arg1 * bufor = new arg1[ sizeof( arg1 ) ]; std::fstream file(( name + end ).c_str(), std::ios::in | std::ios::binary ); file.read(( char * ) bufor, sizeof( arg1 ) ); file.close(); obiekt = * bufor; delete[] bufor; return obiekt; } template < class arg1 > void str::Binary < arg1 >::Edit( arg1 object ) { std::fstream file(( name + end ).c_str(), std::ios::binary | std::ios::trunc | std::ios::out ); file.write(( char * ) object, sizeof( arg1 ) ); obiekt = object; file.close(); }
Proszę o pomoc i z góry dzięki. |
|
Mrovqa |
» 2013-12-20 16:14:01 Dodałeś plik .cpp do projektu? Jeśli tak, to spróbuj przebudować projekt - w przypadku dziwnych błędów tego typu zazwyczaj pomaga. |
|
oputyk Temat założony przez niniejszego użytkownika |
» 2013-12-20 16:21:12 Plik cpp miałem od samego początku. Teraz przebudowałem program, ale niestety nic to nie dało. Może masz jakiś inny pomysł? Dodam jeszcze, że dałem to do jednego pliku nagłówkowego i błąd jest chyba inny, ale też linkera. |
|
maly |
» 2013-12-20 16:29:21 Definicje template daj do nagłowka a nie *.cpp |
|
oputyk Temat założony przez niniejszego użytkownika |
» 2013-12-20 16:35:26 Ok. Dzięki, działa. Zamykam temat. |
|
« 1 » |