Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Problem z dołączaniem plików .cpp do projektu (C::B)

Ostatnio zmodyfikowano 2012-07-30 18:53
Autor Wiadomość
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ć?
P-61453
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.
P-61454
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
P-61455
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
C/C++
#include <iostream>
#include <string>

extern int zmienna1;
extern bool zmienna2;

bool funkcja( int, char * );

funkcje.cpp
C/C++
int zmienna1 = 4;
bool zmienna2 = true;

bool funkcja( int i, char * tekst ) {
    /*definicja*/
}

main.cpp
C/C++
#include "funkcje.h"

bool x;

int main() {
    x = funkcja( zmienna1, "asdasdasd" );
    return 0;
}

P-61456
CodeMeister
Temat założony przez niniejszego użytkownika
» 2012-07-30 18:21:43
fail...

mam początek pliku .hpp:

C/C++
#ifndef GLOBAL_HEADER_HPP___
#define GLOBAL_HEADER_HPP___


#include <windows.h>
#include <winsock2.h>

#define PORT 2888

// zmienne i deklaracje do GUI
LRESULT CALLBACK WndProc( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam );
//BOOL CALLBACK DlgProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam);
void AddWindowText( HWND hWnd, char * text );

HWND window;

i początek pliku func.cpp
C/C++
#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 ;)
P-61457
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ć
P-61458
CodeMeister
Temat założony przez niniejszego użytkownika
» 2012-07-30 18:53:49
Dobra, działa nareszcie, dzięki za pomoc :)
P-61459
« 1 »
  Strona 1 z 1