/ Forside / Teknologi / Udvikling / C/C++ / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
C/C++
#NavnPoint
BertelBra.. 2425
pmbruun 695
Master_of.. 501
Bech_bb 500
kyllekylle 500
jdjespers.. 500
gibson 300
scootergr.. 300
molokyle 287
10  strarup 270
Compiler / linker problemer
Fra : Torben W. Hansen


Dato : 19-06-07 14:37

Hej,

Forsøger at bruge BGI - library (Borland Graphic Interface) fra dette link :

http://www.cs.colorado.edu/~main/cs1300/doc/bgi/bgi.html

Jeg har fulgt punkt 1 til og med 5 i vejledningen og afslutningsvis
foretaget følgende compilering på kommandolinien med den hentede compiler
(MingW g++) fra colorado.edu ovenfor:

g++ bgidemo0.cpp -lbgi -lgdi32 -lcomdlg32 -luuid -loleaut32 -lole32 -o
bgidemo0.exe

Dette kører uden fejl og den genererede bgidemo0.exe virker også

Jeg vil nu gerne køre dette fra Dev C++, der også benytter MingW-compileren
og har derfor kopieret

headerfilen graphics.h og library-filen libbgi.a til respektive biblioteker
i Dev C++ miljøet;

Men hvad gør jeg lige med switchene - jeg forstår ikke rigtig, hvad de
betyder, men gætter på at de har noget med linkeren at gøre ?


--
Med venlig hilsen
Torben W. Hansen








 
 
Jakob Bøhm (20-06-2007)
Kommentar
Fra : Jakob Bøhm


Dato : 20-06-07 10:35

Torben W. Hansen wrote:
> Hej,
>
> Forsøger at bruge BGI - library (Borland Graphic Interface) fra dette link :
>
> http://www.cs.colorado.edu/~main/cs1300/doc/bgi/bgi.html
>
> Jeg har fulgt punkt 1 til og med 5 i vejledningen og afslutningsvis
> foretaget følgende compilering på kommandolinien med den hentede compiler
> (MingW g++) fra colorado.edu ovenfor:
>
> g++ bgidemo0.cpp -lbgi -lgdi32 -lcomdlg32 -luuid -loleaut32 -lole32 -o
> bgidemo0.exe
>
> Dette kører uden fejl og den genererede bgidemo0.exe virker også
>
> Jeg vil nu gerne køre dette fra Dev C++, der også benytter MingW-compileren
> og har derfor kopieret
>
> headerfilen graphics.h og library-filen libbgi.a til respektive biblioteker
> i Dev C++ miljøet;
>
> Men hvad gør jeg lige med switchene - jeg forstår ikke rigtig, hvad de
> betyder, men gætter på at de har noget med linkeren at gøre ?
>
>
På alle *N*X C compilere betyder -lxxx "Link med biblioteket libxxx.a
eller DLL-et libxxx.so" Så på Windows betyder disse switche link med
xxx.lib eller xxx.dll . Så kig i dit udviklingsmiljø efter et sted hvor
man kan specificere de biblioteker/libraries/shared objects/DLL-er man
ønsker at bruge og indtast xxx værdierne der.

Option -o angiver bare navnet på outputfilen, men der vidste du sikkert
allerede.



--
Jakob Bøhm, M.Sc.Eng. * jb@danware.dk * direct tel:+45-45-90-25-33
Danware Data A/S * Bregnerodvej 127 * DK-3460 Birkerod * DENMARK
http://www.netop.com * tel:+45-45-90-25-25 * fax tel:+45-45-90-25-26
Information in this mail is hasty, not binding and may not be right

Torben W. Hansen (20-06-2007)
Kommentar
Fra : Torben W. Hansen


Dato : 20-06-07 11:27

"Jakob Bøhm" <jb@danware.dk> skrev i en meddelelse news:4678f4cb$0$13934

> På alle *N*X C compilere betyder -lxxx "Link med biblioteket libxxx.a
> eller DLL-et libxxx.so" Så på Windows betyder disse switche link med
> xxx.lib eller xxx.dll .

Nå sådan - tak !

Jeg glemte at fortælle at det at det mingw (gcc og g++) compileren windows.
Den benytter samme notation, libxxx.a, for bibliotekerne som
linux/unix-versionen. Dvs. at

g++ bgidemo0.cpp -lbgi -lgdi32 -lcomdlg32 -luuid -loleaut32 -lole32 -o
bgidemo0.exe

linker bgidemo0.o med libgd.a, libgdi32.a, libcomdlg32.a, libuuid.a,
liboleaut32.a og libole32.a til en outputfil bgidemo0.exe

> Så kig i dit udviklingsmiljø efter et sted hvor man kan specificere de
> biblioteker/libraries/shared objects/DLL-er man ønsker at bruge og indtast
> xxx værdierne der.

men hvordan bruges så *.lib filer, hvis man står med sådan en - skal disse
også linkes ?

> Option -o angiver bare navnet på outputfilen, men der vidste du sikkert
> allerede.


Hellere for meget info end for lidt

Med venlig hilsen
Torben W. Hansen





Jakob Bøhm (20-06-2007)
Kommentar
Fra : Jakob Bøhm


Dato : 20-06-07 11:53

Torben W. Hansen wrote:
> "Jakob Bøhm" <jb@danware.dk> skrev i en meddelelse news:4678f4cb$0$13934
>
>> På alle *N*X C compilere betyder -lxxx "Link med biblioteket libxxx.a
>> eller DLL-et libxxx.so" Så på Windows betyder disse switche link med
>> xxx.lib eller xxx.dll .
>
> Nå sådan - tak !
>
> Jeg glemte at fortælle at det at det mingw (gcc og g++) compileren windows.
> Den benytter samme notation, libxxx.a, for bibliotekerne som
> linux/unix-versionen. Dvs. at
>
> g++ bgidemo0.cpp -lbgi -lgdi32 -lcomdlg32 -luuid -loleaut32 -lole32 -o
> bgidemo0.exe
>
> linker bgidemo0.o med libgd.a, libgdi32.a, libcomdlg32.a, libuuid.a,
> liboleaut32.a og libole32.a til en outputfil bgidemo0.exe
>
>> Så kig i dit udviklingsmiljø efter et sted hvor man kan specificere de
>> biblioteker/libraries/shared objects/DLL-er man ønsker at bruge og indtast
>> xxx værdierne der.
>
> men hvordan bruges så *.lib filer, hvis man står med sådan en - skal disse
> også linkes ?
>
>> Option -o angiver bare navnet på outputfilen, men der vidste du sikkert
>> allerede.
>
>
> Hellere for meget info end for lidt
>
> Med venlig hilsen
> Torben W. Hansen
>
>
>
>
Windows .lib filer (fra Microsofts compilere) er i eksakt samme format
som *N*X .a filer, bortset fra filnavnet.

Windows .dll filer indeholder (modsat *N*X .so filer) ikke tilstrækkelig
information til at linke til dem, denne information ligger i stedet i en
speciel "import" .lib fil . Der findes dog værktøjer som med vekslende
held forsøger at rekonstruere "import" .lib fra .dll . "import" .lib
filer indeholder i øvrigt nogle udvidelser i forhold til det oprindelige
*N*X .a + COFF format, men jeg håber da at den nuværende mingw ld.exe
understøtter disse.

Pas i øvrigt på med at angive en .a eller .lib fil direkte til en *N*X
agtig linker. På *N*X betyder dette sommetider at man ønsker at linke
ALT fra biblioteket ind, ikke kun det man bruger. Så hvis du gør det og
din .exe fil pludselig bliver enormt stor, så prøv at se efter om det er
det der er problemet.



--
Jakob Bøhm, M.Sc.Eng. * jb@danware.dk * direct tel:+45-45-90-25-33
Danware Data A/S * Bregnerodvej 127 * DK-3460 Birkerod * DENMARK
http://www.netop.com * tel:+45-45-90-25-25 * fax tel:+45-45-90-25-26
Information in this mail is hasty, not binding and may not be right

Torben W. Hansen (20-06-2007)
Kommentar
Fra : Torben W. Hansen


Dato : 20-06-07 12:20

"Jakob Bøhm" <jb@danware.dk> skrev i en meddelelse
news:4679071f$0$78101$edfadb0f@dread15.news.tele.dk...


> Windows .lib filer (fra Microsofts compilere) er i eksakt samme format som
> *N*X .a filer, bortset fra filnavnet.

Jeg synes stadig at det er lidt uklart, men skal det forstås sådan at
*.a er en *N*X konvention og *lib er den modsvarende Windows konvention,
og det samme for hhv. *.so og (*.dll sammen med en speciel *.lib) ?

Med venlig hilsen
Torben W. Hansen



Jakob Bøhm (20-06-2007)
Kommentar
Fra : Jakob Bøhm


Dato : 20-06-07 13:15

Torben W. Hansen wrote:
> "Jakob Bøhm" <jb@danware.dk> skrev i en meddelelse
> news:4679071f$0$78101$edfadb0f@dread15.news.tele.dk...
>
>
>> Windows .lib filer (fra Microsofts compilere) er i eksakt samme format som
>> *N*X .a filer, bortset fra filnavnet.
>
> Jeg synes stadig at det er lidt uklart, men skal det forstås sådan at
> *.a er en *N*X konvention og *lib er den modsvarende Windows konvention,
> og det samme for hhv. *.so og (*.dll sammen med en speciel *.lib) ?
>

Ja, med den tilføjelse, at da Microsoft lavede deres 32 bit .lib format
valgte de simpelthen at kopiere det filformat der bruges på *N*X, med
meget få afvigelser.

Microsofts .dll format er derimod meget forskelligt fra de forskellige
*N*X .so formater.



--
Jakob Bøhm, M.Sc.Eng. * jb@danware.dk * direct tel:+45-45-90-25-33
Danware Data A/S * Bregnerodvej 127 * DK-3460 Birkerod * DENMARK
http://www.netop.com * tel:+45-45-90-25-25 * fax tel:+45-45-90-25-26
Information in this mail is hasty, not binding and may not be right

Torben W. Hansen (20-06-2007)
Kommentar
Fra : Torben W. Hansen


Dato : 20-06-07 14:26

"Jakob Bøhm" <jb@danware.dk> skrev i en meddelelse news:46791a61$0$78104
> Jeg synes stadig at det er lidt uklart, men skal det forstås sådan at
> *.a er en *N*X konvention og *lib er den modsvarende Windows konvention,
> og det samme for hhv. *.so og (*.dll sammen med en speciel *.lib) ?
>

> Ja, med den tilføjelse, at da Microsoft lavede deres 32 bit .lib format
> valgte de simpelthen at kopiere det filformat der bruges på *N*X, med
> meget få afvigelser.

> Microsofts .dll format er derimod meget forskelligt fra de forskellige
> *N*X .so formater.

OK og mange tak for forklaringerne!

Har lige i dette øjeblik fået Borlands Graphic Interface til at virke med
DEV C++ og mingw compileren ved hjælp af jeres hints og søgen på nettet

Hvis andre skulle have det samme behov er linket her:

http://www.uniqueness-template.com/devcpp/

Super - Tak til jer alle !

Med venlig hilsen
Torben W. Hansen



Søg
Reklame
Statistik
Spørgsmål : 177554
Tips : 31968
Nyheder : 719565
Indlæg : 6408857
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste