🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: be.comp.programming
17 messages
17 total messages Started by Bart Vandewoestyne Fri, 11 Jul 2003 15:50
gethostbyname linker error
#4763
Author: Bart Vandewoestyne
Date: Fri, 11 Jul 2003 15:50
16 lines
1863 bytes
Ik probeer hier voor de fun een kleine Linux applicatie te porten naar 
Windows en moest daarvoor voor de gethostbyname() function call die in 
unix ge�nclude wordt via netdb.h en sys/socket.h zien te vervangen.  Op 
msdn vond ik dat een gelijkaardige call bestond in de Windows API, en 
dat ik daarvoor Winsock2.h moest includen.  Nu blijkt alles inderdaad 
netjes te compileren, doch bij het linken krijg ik de error:


[Linker error] undefined reference to `gethostbyname@4'


Aan wat kan dit liggen?  Als IDE gebrui ik Dev-C++ 
(http://www.bloodshed.net/dev/)

Greetzzz,
mc303
Re: gethostbyname linker error
#4765
Author: Bart Vandewoestyne
Date: Fri, 11 Jul 2003 16:19
35 lines
2764 bytes
Bart Vandewoestyne wrote:
> Ik probeer hier voor de fun een kleine Linux applicatie te porten naar 
> Windows en moest daarvoor voor de gethostbyname() function call die in 
> unix ge�nclude wordt via netdb.h en sys/socket.h zien te vervangen.  Op 
> msdn vond ik dat een gelijkaardige call bestond in de Windows API, en 
> dat ik daarvoor Winsock2.h moest includen.  Nu blijkt alles inderdaad 
> netjes te compileren, doch bij het linken krijg ik de error:
> 
> 
> [Linker error] undefined reference to `gethostbyname@4'
> 
> 
> Aan wat kan dit liggen?  Als IDE gebrui ik Dev-C++ 
> (http://www.bloodshed.net/dev/)

Ter informatie: ik vermoed dat het ergens een library directory is die 
ik niet goed meegeef, doch ik zie niet wat er verkeerd is.  Dit is het 
commando die mijn IDE bij het compileren genereert, en dit lijkt me 
juist, niet?

g++.exe "C:\bart\my_programs\mmsclient\mmsclient.cpp" -o 
"C:\bart\my_programs\mmsclient\mmsclient.exe"   -g3  -I"H:\Program 
Files\Dev-Cpp\include\c++"  -I"H:\Program 
Files\Dev-Cpp\include\c++\mingw32"  -I"H:\Program 
Files\Dev-Cpp\include\c++\backward"  -I"H:\Program 
Files\Dev-Cpp\include"   -L"H:\Program Files\Dev-Cpp\lib"
H:\DOCUME~1\mc303\LOCALS~1\Temp/cc8kaaaa.o(.text+0x220): In function `main':
C:/bart/my_programs/mmsclient/mmsclient.cpp:49: undefined reference to 
`gethostbyname@4'

Execution terminated


Greetzzz,
mc303
Re: gethostbyname linker error
#4766
Author: Davy Loots
Date: Fri, 11 Jul 2003 16:20
27 lines
2009 bytes
Probeer eens te linken met de library Ws2_32.lib.
Zie op
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winsock/win
sock/gethostbyname_2.asp bij de requirements.

vriendelijke groenten,
Davy

"Bart Vandewoestyne" <Bart.VandewoestyneNOSPAM@pandora.be> schreef in
bericht news:3F0EDCDC.7030304@pandora.be...
> Ik probeer hier voor de fun een kleine Linux applicatie te porten naar
> Windows en moest daarvoor voor de gethostbyname() function call die in
> unix ge�nclude wordt via netdb.h en sys/socket.h zien te vervangen.  Op
> msdn vond ik dat een gelijkaardige call bestond in de Windows API, en
> dat ik daarvoor Winsock2.h moest includen.  Nu blijkt alles inderdaad
> netjes te compileren, doch bij het linken krijg ik de error:
>
>
> [Linker error] undefined reference to `gethostbyname@4'
>
>
> Aan wat kan dit liggen?  Als IDE gebrui ik Dev-C++
> (http://www.bloodshed.net/dev/)
>
> Greetzzz,
> mc303
>
Re: gethostbyname linker error
#4768
Author: Nicolas Barbier
Date: Fri, 11 Jul 2003 16:30
19 lines
1763 bytes
Bart Vandewoestyne wrote:

> Ik probeer hier voor de fun een kleine Linux applicatie te porten naar
> Windows en moest daarvoor voor de gethostbyname() function call die in
> unix ge�nclude wordt via netdb.h en sys/socket.h zien te vervangen.  Op
> msdn vond ik dat een gelijkaardige call bestond in de Windows API, en
> dat ik daarvoor Winsock2.h moest includen.  Nu blijkt alles inderdaad
> netjes te compileren, doch bij het linken krijg ik de error:
> 
> 
> [Linker error] undefined reference to `gethostbyname@4'
> 
> Aan wat kan dit liggen?  Als IDE gebrui ik Dev-C++
> (http://www.bloodshed.net/dev/)

Eventuele fout: je moet compileren via MinGW, niet via Cygwin.

-- 
Nicolas Barbier
Re: gethostbyname linker error
#4769
Author: Bart Vandewoestyne
Date: Fri, 11 Jul 2003 16:32
40 lines
2682 bytes
Davy Loots wrote:
> Probeer eens te linken met de library Ws2_32.lib.
> Zie op
> http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winsock/win
> sock/gethostbyname_2.asp bij de requirements.

Inderdaad, dat had ik intussen ook al gevonden.  Als ik dan zoek op mijn 
systeem mag ik blijkbaar blij zijn dat ik Matlab ooit ge�nstalleerd heb, 
want de enigste plaats waar ik die Ws2_32.lib terugvind is in:

H:\MATLABR11\sys\lcc\lib

winsock2.h staat bij mij op twee plaatsen, namelijk:

H:\Program Files\Dev-Cpp\include
H:\MATLABR11\sys\lcc\include

Ik heb die library dan toegevoegd bij mijn linker directories in mijn 
IDE, en zoals je ziet wordt die directory dus meegelinkt:

g++.exe "C:\bart\my_programs\mmsclient\mmsclient.cpp" -o 
"C:\bart\my_programs\mmsclient\mmsclient.exe"   -g3  -I"H:\Program 
Files\Dev-Cpp\include\c++"  -I"H:\Program 
Files\Dev-Cpp\include\c++\mingw32"  -I"H:\Program 
Files\Dev-Cpp\include\c++\backward"  -I"H:\Program 
Files\Dev-Cpp\include"   -L"H:\Program Files\Dev-Cpp\lib" 
-L"H:\MATLABR11\sys\lcc\lib"
H:\DOCUME~1\mc303\LOCALS~1\Temp/ccwDbaaa.o(.text+0x220): In function `main':
C:/bart/my_programs/mmsclient/mmsclient.cpp:49: undefined reference to 
`gethostbyname@4'

Execution terminated


Verder zie je dus ook dat het probleem blijft :-(

Ik ben niet zo goed meer mee...

Greetzzz,
mc303
Re: gethostbyname linker error
#4770
Author: Bart Vandewoestyne
Date: Fri, 11 Jul 2003 16:36
11 lines
1722 bytes
Nicolas Barbier wrote:
>
> Eventuele fout: je moet compileren via MinGW, niet via Cygwin.

Ik snap niet goed wat je hiermee bedoelt vrees ik... bedoel je dat ik in 
mijn include/link-directories enkel mingw directories mag staan hebben 
en dat daar niets cygwin-achtigs mag instaan?  Indien je dat bedoelt, 
dan lijkt me dat in orde...

Greetzzz,
mc303
Re: gethostbyname linker error
#4775
Author: Nicolas Barbier
Date: Fri, 11 Jul 2003 18:14
18 lines
1851 bytes
Bart Vandewoestyne wrote:

> Nicolas Barbier wrote:
> 
>> Eventuele fout: je moet compileren via MinGW, niet via Cygwin.
> 
> Ik snap niet goed wat je hiermee bedoelt vrees ik... bedoel je dat ik in
> mijn include/link-directories enkel mingw directories mag staan hebben
> en dat daar niets cygwin-achtigs mag instaan?  Indien je dat bedoelt,
> dan lijkt me dat in orde...

Ik denk dat je met Dev-C++ ergens kan instellen welke dingen je meelinkt. 
In oudere versies was er een project-optie in de stijl van "use X instead 
of Y when compiling" (waarbij X en Y Cygwin en MinGW zijn, maar ik weet 
niet in welke volgorde).

-- 
Nicolas Barbier
Re: gethostbyname linker error
#4776
Author: Bart Vandewoestyne
Date: Fri, 11 Jul 2003 18:42
33 lines
2398 bytes
Nicolas Barbier wrote:
> 
> Ik denk dat je met Dev-C++ ergens kan instellen welke dingen je meelinkt. 
> In oudere versies was er een project-optie in de stijl van "use X instead 
> of Y when compiling" (waarbij X en Y Cygwin en MinGW zijn, maar ik weet 
> niet in welke volgorde).

Intussen heb ik ondervonden dat ik met volgend kort stukje code dezelfde 
link error krijg:


#include <winsock2.h>

int main (int argc, char **argv) {

     gethostbyname("azw.dyns.be");

     return 0;

}


Kan iemand eens proberen en zien of ie ook een link error krijgt?  Of 
ziet iemand wat ik hier verkeerd doe?  Een tweetal andere mensen die ik 
via IRC vond hebben hetzelfde ook al in Dev-Cpp geprobeerd en kregen 
dezelfde link error...  Ok met M$ Visual C++ kreeg iemand een link error...

Vergeet ik hier header files te includen of zo?  Ik denk van niet...

Ik *zie* het niet... 't zal wel weer stom zijn... maar ik *zie* het niet...

Greetzzz,
mc303
Re: gethostbyname linker error
#4778
Author: Smudge
Date: Fri, 11 Jul 2003 22:32
32 lines
2069 bytes
Bart Vandewoestyne wrote:
> Nicolas Barbier wrote:

[...]

> Intussen heb ik ondervonden dat ik met volgend kort stukje code
> dezelfde link error krijg:
>
>
> #include <winsock2.h>
>
> int main (int argc, char **argv) {
>
>      gethostbyname("azw.dyns.be");
>
>      return 0;
>
> }
>
> Kan iemand eens proberen en zien of ie ook een link error krijgt?  Of
> ziet iemand wat ik hier verkeerd doe?  Een tweetal andere mensen die
> ik via IRC vond hebben hetzelfde ook al in Dev-Cpp geprobeerd en
> kregen dezelfde link error...  Ok met M$ Visual C++ kreeg iemand een
> link error...
>
> Vergeet ik hier header files te includen of zo?  Ik denk van niet...

Onder Microsoft Visual C++ moet je linken met Ws2_32.lib. Zie ook
http://www.experts-exchange.com/Programming/Programming_Languages/Cplusplus/Q_20393954.html.

Mvg,
Smudge
Re: gethostbyname linker error
#4779
Author: Bart Vandewoestyne
Date: Fri, 11 Jul 2003 23:15
21 lines
2392 bytes
Smudge wrote:
> 
> Onder Microsoft Visual C++ moet je linken met Ws2_32.lib. Zie ook
> http://www.experts-exchange.com/Programming/Programming_Languages/Cplusplus/Q_20393954.html.

Ik werk niet met M$ Visual C++, maar met Dev-Cpp 
(http://www.bloodshed.net/dev/)

Intussen heb ik het gevonden: ik dacht dat het voldoende was om in mijn 
IDE-opties gewoon de directory waar de libraries in stonden op te geven, 
maar blijkbaar moet je de libraries die je gebruikt tijdens het 
compileren dan ook nog eens specifiek meegeven via de -l optie van 
gcc... meegeven bij de compiler opties dus, en *niet* bij de linker 
opties... en aangezien het om een link-error ging duurde het een tijdje 
eer ik dat door had :-)

Greetzzz,
mc303

PS: sorry als dit wartaal lijkt, mijn geest is niet echt helder meer na 
een 10-tal uur hacken ;-)
Re: gethostbyname linker error
#4780
Author: Pieter Philippaerts
Date: Sat, 12 Jul 2003 02:54
11 lines
1769 bytes
"Bart Vandewoestyne" <Bart.VandewoestyneNOSPAM@pandora.be> wrote in message
news:3F0EE6A2.1060500@pandora.be...
> Inderdaad, dat had ik intussen ook al gevonden.  Als ik dan zoek op mijn
> systeem mag ik blijkbaar blij zijn dat ik Matlab ooit ge�nstalleerd heb,
> want de enigste plaats waar ik die Ws2_32.lib terugvind is in:
> H:\MATLABR11\sys\lcc\lib

Platform SDK downloaden en installeren => bevat alle Windows .lib files.

Mvg,
Pieter Philippaerts
Re: gethostbyname linker error
#4781
Author: Bart Vandewoestyne
Date: Sat, 12 Jul 2003 07:20
10 lines
1709 bytes
Pieter Philippaerts wrote:
>
> Platform SDK downloaden en installeren => bevat alle Windows .lib files.

Was blijkbaar niet nodig, een Dev-Cpp install bevat blijkbaar toch de 
nodige libs voor wat ik wil doen.  Ik moest gewoon -lws2_32 meegeven bij 
de compiler options in mijn IDE.

Greetzzz,
mc303
Re: gethostbyname linker error
#4782
Author: Dirk Feytons
Date: Sat, 12 Jul 2003 12:34
15 lines
1894 bytes
Bart Vandewoestyne wrote:

> Was blijkbaar niet nodig, een Dev-Cpp install bevat blijkbaar toch de 
> nodige libs voor wat ik wil doen.  Ik moest gewoon -lws2_32 meegeven bij 
> de compiler options in mijn IDE.

libws2_32.a heet de library die bij Dev-C++ zit. Ik was aan het zoeken 
op ws2_32.lib maar die zit er niet bij...

-- 
Dirk

(PGP keyID: 0x448BC5DD - http://www.gnupg.org - http://www.pgp.com)

.oO� "You don't know who I am insiiiide! You never have!" -- Thumb Wars �Oo.
Re: gethostbyname linker error
#4783
Author: Dirk Feytons
Date: Sat, 12 Jul 2003 12:39
26 lines
2748 bytes
Bart Vandewoestyne wrote:

> Intussen heb ik het gevonden: ik dacht dat het voldoende was om in mijn 
> IDE-opties gewoon de directory waar de libraries in stonden op te geven, 
> maar blijkbaar moet je de libraries die je gebruikt tijdens het 
> compileren dan ook nog eens specifiek meegeven via de -l optie van 
> gcc... meegeven bij de compiler opties dus, en *niet* bij de linker 
> opties... en aangezien het om een link-error ging duurde het een tijdje 
> eer ik dat door had :-)

Vreemd dat je het bij de compiler opties toevoegt. Voor een projectje 
gebruik ik libjpeg.a en bij mij volstaat het om die op te nemen bij de 
linker opties (Project Options -> Parameters -> Linker).
Anderzijds vind ik het raar dat het expliciet moet opgegeven worden 
welke libraries we gebruiken. De directory met de libs staat 
gespecifieerd bij Tools -> Compiler Options -> Directories -> Libraries. 
Je zou denken dat dat volstaat; wat is anders het nut van alles in die 
directory te zetten en het pad daarnaar op te geven.

-- 
Dirk

(PGP keyID: 0x448BC5DD - http://www.gnupg.org - http://www.pgp.com)

.oO� Build a man a fire and he'll be warm for a day.  Set a man on fire, 
and he'll be warm for the rest of his life. �Oo.
Re: gethostbyname linker error
#4784
Author: Roel Schroeven
Date: Sat, 12 Jul 2003 13:32
27 lines
2599 bytes
Dirk Feytons wrote:
> Bart Vandewoestyne wrote:
> 
>> Intussen heb ik het gevonden: ik dacht dat het voldoende was om in mijn 
>> IDE-opties gewoon de directory waar de libraries in stonden op te geven, 
>> maar blijkbaar moet je de libraries die je gebruikt tijdens het 
>> compileren dan ook nog eens specifiek meegeven via de -l optie van 
>> gcc... meegeven bij de compiler opties dus, en *niet* bij de linker 
>> opties... en aangezien het om een link-error ging duurde het een tijdje 
>> eer ik dat door had :-)
> 
> Vreemd dat je het bij de compiler opties toevoegt. Voor een projectje 
> gebruik ik libjpeg.a en bij mij volstaat het om die op te nemen bij de 
> linker opties (Project Options -> Parameters -> Linker).
> Anderzijds vind ik het raar dat het expliciet moet opgegeven worden 
> welke libraries we gebruiken. De directory met de libs staat 
> gespecifieerd bij Tools -> Compiler Options -> Directories -> Libraries. 
> Je zou denken dat dat volstaat; wat is anders het nut van alles in die 
> directory te zetten en het pad daarnaar op te geven.

Anders moet je bij elke library het volledig pad opgeven. Het is maar
normaal dat je elke library apart moet opgeven; anders worden altijd
alle libraries meegelinkt, ook degene die niet nodig zijn.

-- 
"Codito ergo sum"
Roel Schroeven
Re: gethostbyname linker error
#4785
Author: Bart Vandewoestyne
Date: Sat, 12 Jul 2003 14:05
23 lines
2544 bytes
Roel Schroeven wrote:
> 
> Anders moet je bij elke library het volledig pad opgeven. Het is maar
> normaal dat je elke library apart moet opgeven; anders worden altijd
> alle libraries meegelinkt, ook degene die niet nodig zijn.

Ah, ok, dus je bedoelt dat het logisch is omdat je via die library 
directories al het grootste deel van het pad opgeeft, en dan via die 
compiler specifieke opties nog de library zelf meegeeft, zonder het 
lange eerste stuk van het pad?

Wel nog iets raars: de compiler optie die ik gebruik is '-lws2_32', en 
als ik kijk in mijn Dev-Cpp\lib directory, dan zie ik als filenaam enkel 
'libws2_32.a' staan... (bemerk het verschil in naam!

Wat zijn die .a files juist en hoe zou het verschil in naam dan te 
verklaren zijn?  M.a.w. hoe komt het dat die '-lws2_32' werkt terwijl de 
filenaam niet hetzelfde is?

Just out of curiosity eigenlijk :-)

Greetzzz,
mc303
Re: gethostbyname linker error
#4786
Author: Roel Schroeven
Date: Sat, 12 Jul 2003 14:55
40 lines
3113 bytes
Bart Vandewoestyne wrote:
> Roel Schroeven wrote:
>> 
>> Anders moet je bij elke library het volledig pad opgeven. Het is maar
>> normaal dat je elke library apart moet opgeven; anders worden altijd
>> alle libraries meegelinkt, ook degene die niet nodig zijn.
> 
> Ah, ok, dus je bedoelt dat het logisch is omdat je via die library 
> directories al het grootste deel van het pad opgeeft, en dan via die 
> compiler specifieke opties nog de library zelf meegeeft, zonder het 
> lange eerste stuk van het pad?

Inderdaad.

> Wel nog iets raars: de compiler optie die ik gebruik is '-lws2_32', en 
> als ik kijk in mijn Dev-Cpp\lib directory, dan zie ik als filenaam enkel 
> 'libws2_32.a' staan... (bemerk het verschil in naam!
> 
> Wat zijn die .a files juist en hoe zou het verschil in naam dan te 
> verklaren zijn?  M.a.w. hoe komt het dat die '-lws2_32' werkt terwijl de 
> filenaam niet hetzelfde is?

.a files zijn archives. Gewoon een verzameling .o files die samen in een
file gestoken zijn, plus een index van de symbolen zodat de linker die
later gemakkelijk kan terugvinden. Je kan een library gemakkelijk zelf
maken door ofwel eerst een archive te maken met ar en dan de index eraan
toe te voegen met ranlib, ofwel beide te stappen te combineren met ar
-s.

Libraries op unix-achtige systemen beginnen normaal altijd met 'lib',
maar als je de linker de naam van een library meegeeft zet je dat er
niet bij; de linker doet dat zelf. Ik vind dat ook een beetje raar, maar
het is nu eenmaal een conventie.

DevCpp draait wel onder Windows, maar het gebruikt gcc & friends, die
ontwikkeld zijn voor gebruik op unix-achtige systemen.

-- 
"Codito ergo sum"
Roel Schroeven
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads