[C++] Dzielenie kodu na części
Ostatnio zmodyfikowano 2010-05-22 15:50
SeaMonster131 Temat założony przez niniejszego użytkownika |
[C++] Dzielenie kodu na części » 2010-05-21 20:43:06 A więc tak, stworzyłem plik o nazwie "Cos.h" i powiedzmy umieściłem w nim coś takiego #ifndef COS_H #define COS_H #include <windows.h> #include <mmsystem.h> namespace Cos { void Muzaloop( char sciezka[] ) { sndPlaySound( sciezka, SND_ASYNC | SND_LOOP ); } } #endif
I później w swoim projekcie mogłem normalnie używać funkcji Muzaloop("..."); Ale później tych funkcji było za dużo i postanowiłem wpakować je do różnych plików. Tak więc plik Coś.h wyglądał tak: #ifndef COS_H #define COS_H #include "CosMuza.h" #endif
A plik CosMuza.h tak: #ifndef COSMUZA_H #define COSMUZA_H #include <windows.h> #include <mmsystem.h> namespace Cos { void Muzaloop( char sciezka[] ) { sndPlaySound( sciezka, SND_ASYNC | SND_LOOP ); } } #endif
I teraz pojawia się błąd, gdy w swoim projekcie używam funkcji Muzaloop("..."); To wyskakuje błąd: [Linker error] undefined reference to `Muzaloop(char*)' ld returned 1 exit status Sory że to takie długie ale streścić tego bardziej nie mogłem... A może mi ktoś pomóc? Bo ja już kompletnie nie wiem co trzeba zrobić... (Przynajmniej wydaje mi sie że trzeba coś zlinkować tylko że ja nie tworzyłem żadnego pliku .a lub .lib ...) PS. Jeżeli to coś da to używam Dev-C++ 4.9.9.2... |
|
Elaine |
» 2010-05-21 20:50:28 nie, nic |
|
lenrokskate |
» 2010-05-21 22:24:01 nie używaj Deva bo ma bardzo dużo błędów - lepszy jest np. Code::Blocks, Eclipse... Jest dużo lepszych alternatyw. teraz problem: oczywiście incluedujesz cos.h do main.cpp? I sprawdź czy dobrze dopisałeś przestrzeń nazw. A w ogóle to zrobiłem to źle bo w plikach .h nie powinno się umieszczać bloków funkcji - powinno to wyglądać tak: #ifndef COS_H #define COS_H #include <windows.h> #include <mmsystem.h> namespace Cos { void Muzaloop( char sciezka[] ); } #endif
#include "cosmuza.h"
void cos::Muzaloop( char sciezka[] ) { sndPlaySound( sciezka, SND_ASYNC | SND_LOOP ); }
|
|
Elaine |
» 2010-05-21 23:43:51 $100 question: dlaczego nie powinno się definiować funkcji w nagłówkach? |
|
lenrokskate |
» 2010-05-22 11:14:47 eee... bo tak jest w standardzie? |
|
Elaine |
» 2010-05-22 11:25:37 Nieprawda, kombinuj dalej... |
|
michalp |
» 2010-05-22 11:47:18 Podpowiedź: chodzi o coś z kompilacją. |
|
lenrokskate |
» 2010-05-22 12:05:11 ups
usunąć |
|
« 1 » 2 |