PDA

Visualizza la versione completa : [C++] linkare librerie win_ccc.h


Kandalf
26-12-2004, 15:19
devo usare queste librerie
http://horstmann.com/ccc.html

ma nn ho capito bene come usare con g++

nn basta mettere il file ccc_win.h nella stessa dir e compilare?

se provo così nn va
bash-2.05b$ g++ point.cpp -o point
/usr/lib/gcc-lib/i686-pc-linux-gnu/3.3.4/../../../crt1.o(.text+0x18): In function `_start':
: undefined reference to `main'
/tmp/ccN4upKS.o(.text+0x1d): In function `ccc_win_main()':
: undefined reference to `Point::Point(double, double)'
collect2: ld returned 1 exit status

ho provato a leggere l'help su quel sito...ma provando nn va lo stesso
http://horstmann.com/ccc/help/ccc3help.html


cmq il sorgente eccolo


#include "ccc_win.h"

int ccc_win_main()
{
Point p(1, 3);

return 0;
}

anx721
26-12-2004, 15:27
l'include serve semplicemente a dire al compilaotre quali sono i prototipi e i tipi definiti in una libreria, utili durante la fase di compilazione, ma poi nella fase di linking devi linkare il tuo programma con la libreria, il che si fa generalmento con l'opzione:

-l nomelibreira

più eventuali altre opzioni desrcritte nel manuale della libreria stessa.

xegallo
26-12-2004, 15:29
linguaggio nel titolo leggi il regolamento

anx721
26-12-2004, 15:32
Dalla pagina del sito (sezione linux):

http://horstmann.com/ccc/help/ccc3help.html



Programs that use CCC graphics:

g++ -I ~/cccbook/cccfiles -o executable_name source_file ~/cccbook/cccfiles/ccc_x11.cpp ~/cccbook/cccfiles/ccc_shap.cpp -L /usr/X11R6/lib -lX11
The command must be typed on a single line.
For example,
g++ -I ~/cccbook/cccfiles -o phoenix phoenix.cpp ~/cccbook/cccfiles/ccc_x11.cpp ~/cccbook/cccfiles/ccc_shap.cpp -L /usr/X11R6/lib -lX11
Alternatively, you can copy ccc_win.h, ccc_x11.h, ccc_x11.cpp, ccc_shap.h, and ccc_shap.cpp from the ~/cccbook/cccfiles directory into the same directory as the program that uses them, and compile with a simpler command line.
g++ -o executable_name source_file ccc_x11.cpp ccc_shap.cpp -L /usr/X11R6/lib -lX11
For example,

g++ -o phoenix phoenix.cpp ccc_x11.cpp ccc_shap.cpp -L /usr/X11R6/lib -lX11
For the "ASCII art" version of the graphics library, use

g++ -D CCC_ASC -I ~/cccbook/cccfiles -o executable_name source_file ~/cccbook/cccfiles/ccc_asc.cpp ~/cccbook/cccfiles/ccc_shap.cpp
For example,
g++ -D CCC_ASC -I ~/cccbook/cccfiles -o phoenix phoenix.cpp ~/cccbook/cccfiles/ccc_asc.cpp ~/cccbook/cccfiles/ccc_shap.cpp
For the wxWindows version of the graphics library, use

gcc -o executable_name -DCCC_WXW -I ~/cccbook/cccfiles `wx-config --cflags` source_file ~/cccbook/cccfiles/ccc_x11.cpp ~/cccbook/cccfiles/ccc_shap.cpp `wx-config --libs`
For example,
gcc -o phoenix -DCCC_WXW -I ~/cccbook/cccfiles `wx-config --cflags` phoenix.cpp ~/cccbook/cccfiles/ccc_x11.cpp ~/cccbook/cccfiles/ccc_shap.cpp `wx-config --libs`

Kandalf
26-12-2004, 15:59
ho provato...guarda


bash-2.05b$ ls
ccc_shap.cpp ccc_shap.h ccc_win.h ccc_x11.cpp ccc_x11.h circle.cpp
bash-2.05b$ g++ -o circle circle.cpp ccc_x11.cpp ccc_shap.cpp -L /usr/X11R6/lib -lX11
ccc_x11.cpp: In member function `void GraphicWindow::open(Display*, long
unsigned int)':
ccc_x11.cpp:64: error: `cerr' undeclared (first use this function)
ccc_x11.cpp:64: error: (Each undeclared identifier is reported only once for
each function it appears in.)
ccc_x11.cpp:64: error: `endl' undeclared (first use this function)

anx721
26-12-2004, 16:08
il compilatore riporta degli errori in quelli che dovrebbero essere i files sorgenti della libreria...comunqnue sostituisci in tali files:

endl, cerr, cout e cin

con:

std::endl, std::cerr, std::cout, std::cin


endl, cin, cout e cerr sono varibili definiti nel namespace std, e per fare riferimento ad esse bisogna farle precedere da std:: o inserire

using namespace std;

all'inizio del file.

Kandalf
26-12-2004, 16:17
ehm...niente....nn potrebbe essere xorg che dà problemi?

anx721
26-12-2004, 16:22
che significa niente? non so cos'è xorg; hai provato a fare le modifiche che ti ho detto? i file includono <iostream>?

Kandalf
26-12-2004, 16:24
no
<cstdio>

anx721
26-12-2004, 16:35
endl, cerr, cout, cin sono dichiarati in iostream, quindi aggiungi questa riga in quei files:

#include <iostream>

Loading