Problem z dołączaniem plików .cpp do projektu (C::B)
Ostatnio zmodyfikowano 2012-07-30 18:53
CodeMeister Temat założony przez niniejszego użytkownika |
Problem z dołączaniem plików .cpp do projektu (C::B) » 2012-07-30 17:54:58 Witam od jakiegoś czasu mam problem jak w temacie, tyczy się to zmiennych... pliki .hpp i .rc mogę bez problemów dołączać a gdy np. dodaję plik func.cpp to: obj\Debug\functions.o||In function `Z10initSocketv':| E:\ImportantProject\BlackLightClient\functions.cpp|4|multiple definition of `window'| obj\Debug\main.o:E:\ImportantProject\BlackLightClient\main.cpp|5|first defined here| obj\Debug\functions.o||In function `Z10initSocketv':| E:\ImportantProject\BlackLightClient\functions.cpp|4|multiple definition of `ipEdit'| obj\Debug\main.o:E:\ImportantProject\BlackLightClient\main.cpp|5|first defined here| obj\Debug\functions.o||In function `Z10initSocketv':| E:\ImportantProject\BlackLightClient\functions.cpp|5|multiple definition of `logEdit'| obj\Debug\main.o:E:\ImportantProject\BlackLightClient\main.cpp|5|first defined here| obj\Debug\functions.o||In function `Z10initSocketv':| E:\ImportantProject\BlackLightClient\functions.cpp|5|multiple definition of `passwEdit'| obj\Debug\main.o:E:\ImportantProject\BlackLightClient\main.cpp|6|first defined here| obj\Debug\functions.o||In function `Z10initSocketv':| E:\ImportantProject\BlackLightClient\functions.cpp|5|multiple definition of `viewEdit'| obj\Debug\main.o:E:\ImportantProject\BlackLightClient\main.cpp|10|first defined here| obj\Debug\functions.o||In function `Z10initSocketv':| E:\ImportantProject\BlackLightClient\functions.cpp|5|multiple definition of `writeEdit'| obj\Debug\main.o:E:\ImportantProject\BlackLightClient\main.cpp|10|first defined here| obj\Debug\functions.o||In function `Z10initSocketv':| E:\ImportantProject\BlackLightClient\functions.cpp|5|multiple definition of `connectBut'| obj\Debug\main.o:E:\ImportantProject\BlackLightClient\main.cpp|11|first defined here| obj\Debug\functions.o||In function `Z10initSocketv':| E:\ImportantProject\BlackLightClient\functions.cpp|5|multiple definition of `logBut'| obj\Debug\main.o:E:\ImportantProject\BlackLightClient\main.cpp|11|first defined here| obj\Debug\functions.o||In function `Z10initSocketv':| E:\ImportantProject\BlackLightClient\functions.cpp|5|multiple definition of `regBut'| obj\Debug\main.o:E:\ImportantProject\BlackLightClient\main.cpp|12|first defined here| obj\Debug\functions.o||In function `Z10initSocketv':| E:\ImportantProject\BlackLightClient\functions.cpp|5|multiple definition of `sendBut'| obj\Debug\main.o:E:\ImportantProject\BlackLightClient\main.cpp|12|first defined here| obj\Debug\functions.o||In function `Z10initSocketv':| E:\ImportantProject\BlackLightClient\functions.cpp|5|multiple definition of `bufor'| obj\Debug\main.o:E:\ImportantProject\BlackLightClient\main.cpp|13|first defined here| obj\Debug\functions.o||In function `Z10initSocketv':| E:\ImportantProject\BlackLightClient\functions.cpp|7|multiple definition of `dlugosc'| obj\Debug\main.o:E:\ImportantProject\BlackLightClient\main.cpp|14|first defined here| obj\Debug\functions.o||In function `Z10initSocketv':| E:\ImportantProject\BlackLightClient\functions.cpp|7|multiple definition of `server'| obj\Debug\main.o:E:\ImportantProject\BlackLightClient\main.cpp|14|first defined here| ||=== Build finished: 26 errors, 2 warnings ===|
funkcje jakie mam to np. initSocket(); Compilator twierdzi że definicja (ta druga) jest w main.cpp mniej-więcej w miejscu gdzie ja mam funkcję main. do func.cpp dołączam header, w którym są instrukcje #ifndef GLOBAL_HEADRE_HPP itd... Czy ktoś może wie co mogę z tym zrobić? |
|
RazzorFlame |
» 2012-07-30 18:03:41 Znajac juz troche takie błędy ( xD ) mysle ze definiujesz jakies funkcje w headerach. Wtedy jesli include'ujesz te nagłówki w np func.cpp i main.cpp wtedy jest podwojnie definiowanie. |
|
CodeMeister Temat założony przez niniejszego użytkownika |
» 2012-07-30 18:08:13 includeuje, jak usunąłem dalej jest problem, gdzie mam dać include do czego? bo mam tak że func.cpp includuje header a main includuje... header ale wtedy nie wykrywa tych funkcji z func.cpp |
|
mostrom |
» 2012-07-30 18:12:57 Deklaracja, a definicja to dwie inne rzeczy. jeśli w nowym pliku .cpp używasz zmiennych z innego pliku to musisz je zadeklarować w tym pliku. extern zmienna; extern daje wiedzę kompilatorowi, że zmienna jest już gdzieś w projekcjie zdefiniowana i można jej używać. funckje.h #include <iostream> #include <string>
extern int zmienna1; extern bool zmienna2;
bool funkcja( int, char * );
funkcje.cpp int zmienna1 = 4; bool zmienna2 = true;
bool funkcja( int i, char * tekst ) { }
main.cpp #include "funkcje.h"
bool x;
int main() { x = funkcja( zmienna1, "asdasdasd" ); return 0; }
|
|
CodeMeister Temat założony przez niniejszego użytkownika |
» 2012-07-30 18:21:43 fail... mam początek pliku .hpp: #ifndef GLOBAL_HEADER_HPP___ #define GLOBAL_HEADER_HPP___
#include <windows.h> #include <winsock2.h>
#define PORT 2888
LRESULT CALLBACK WndProc( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam );
void AddWindowText( HWND hWnd, char * text );
HWND window;
i początek pliku func.cpp #include "GlobalHeader.hpp"
int mainSocket = - 1; sockaddr_in server;
int initSocket() { mainSocket = socket( AF_INET, SOCK_STREAM, 0 );
oraz log obj\Debug\functions.o||In function `Z10initSocketv':| E:\ImportantProject\BlackLightClient\functions.cpp|7|multiple definition of `window'| obj\Debug\main.o:E:\ImportantProject\BlackLightClient\main.cpp|11|first defined here|
Nie rozumiem o co kaman... ps. czegoś ci brakuje ;) |
|
mostrom |
» 2012-07-30 18:38:35 w pliku .hpp masz taką linijkę: HWND window; to jest już definicja. Nie definiuje się zmiennych w pliku nagłówkowym. musisz tu dodać słowo kluczowe extern, a w pliku cpp to zdefiniować i używać |
|
CodeMeister Temat założony przez niniejszego użytkownika |
» 2012-07-30 18:53:49 Dobra, działa nareszcie, dzięki za pomoc :) |
|
« 1 » |