[DLL/STATICLIB] Funkcje z szablonami
Ostatnio zmodyfikowano 2012-02-20 11:41
RazzorFlame Temat założony przez niniejszego użytkownika |
[DLL/STATICLIB] Funkcje z szablonami » 2012-02-19 15:28:24 Linkuje dll'a (wczesniej linkowalem static liba) z funkcjami z szablonami. Kod dll'a: #include "cppmain.h"
template < class __str > void Set_Title( __str title ) { SetConsoleTitle( title ); }
void SetTextColor( COLOR col ) { HANDLE hand; hand = GetStdHandle( STD_OUTPUT_HANDLE ); if( col == BG_RED ) SetConsoleTextAttribute( hand, BACKGROUND_RED ); if( col == BG_GREEN ) SetConsoleTextAttribute( hand, BACKGROUND_GREEN ); if( col == BG_BLUE ) SetConsoleTextAttribute( hand, BACKGROUND_BLUE ); if( col == BG_INTENSE ) SetConsoleTextAttribute( hand, BACKGROUND_INTENSITY ); if( col == FG_RED ) SetConsoleTextAttribute( hand, FOREGROUND_RED ); if( col == FG_GREEN ) SetConsoleTextAttribute( hand, FOREGROUND_GREEN ); if( col == FG_BLUE ) SetConsoleTextAttribute( hand, FOREGROUND_BLUE ); if( col == FG_INTENSE ) SetConsoleTextAttribute( hand, FOREGROUND_INTENSITY ); }
void Pause() { getch(); }
void Wait( int __ms ) { Sleep( __ms ); }
void Write( char * __t ) { cout << __t; }
template < typename varG > varG GetVar() { int var; cin >> var; return var; }
W naglowku są tylko deklaracje i enum koloru. Log: Kompilator: Default compiler Building Makefile: "C:\DevCpp\Projekty\CPPtest\Makefile.win" Wykonywanie make... make.exe -f "C:\DevCpp\Projekty\CPPtest\Makefile.win" all g++.exe main.o -o "CPPC test.exe" -L"C:/DevCpp/lib" ../CPPConsole/CPPConsole.a
main.o(.text+0x2c):main.cpp: undefined reference to `void Set_Title<char*>(char*)' collect2: ld returned 1 exit status
make.exe: *** ["CPPC] Error 1
Wykonanie zakończone
|
|
DejaVu |
» 2012-02-19 15:36:25 Szablony nie są eksportowalne - one muszą być w plikach nagłówkowych. |
|
RazzorFlame Temat założony przez niniejszego użytkownika |
» 2012-02-19 15:40:21 Stworzylem sobie naglowek z szablonami i "include'owałem" go do projektu. Look: enum COLOR { BG_RED, BG_GREEN, BG_BLUE, BG_INTENSE, FG_RED, FG_GREEN, FG_BLUE, FG_INTENSE };
template < class __str > void Set_Title( __str title ); void SetTextColor( COLOR col ); void Pause(); void Wait( int __ms ); void Write( char * __t ); template < class varG > varG GetVar();
|
|
malan |
» 2012-02-19 17:46:52 W pliku nagłówkowym musi być definicja szablonu. |
|
RazzorFlame Temat założony przez niniejszego użytkownika |
» 2012-02-19 18:16:01 Jaka definicja? Przecież mam: "template < class __str > void Set_Title( __str title );"
EDIT: Chodzi ci o całą funkcje? Czy co |
|
akwes |
» 2012-02-19 18:55:33 Deklaracja extern int i; bool IsSomething( int ); bool GoGoGo( int costam );
Definicja int a = 10; int Get( int a ) { return 4 + a; }
|
|
RazzorFlame Temat założony przez niniejszego użytkownika |
» 2012-02-20 07:06:31 Akwes, wiem ale czy to znaczy że musze całą funkcje z szablonem definiować w nagłówku? |
|
npHard |
» 2012-02-20 11:10:44 A wiesz czym są szablony i w jaki sposób kompilator zamienia je na kod wynikowy? |
|
« 1 » 2 |