Dotaz ohledně "getnameinfo()" – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Dotaz ohledně "getnameinfo()" – C / C++ – Fórum – Programujte.comDotaz ohledně "getnameinfo()" – C / C++ – Fórum – Programujte.com

 

Origin
~ Anonymní uživatel
9 příspěvků
1. 9. 2013   #1
-
0
-

Ahoj, mám jen takový dotaz, nikde na to nemůžu najít odpověď... mám projekt (MFC aplikace) napsaný v C++ - Visual Studio 6 (SP6) a z nějakého důvodu nemůžu zkompilovat kód obsahující zavolání funkce "getnameinfo()"

dwRetval = getnameinfo((struct sockaddr *) &saGNI,sizeof (struct sockaddr),hostname,1025, servInfo, 32, NULL);

Se starým "gethostbyaddr()" nebyl problém

myhostent = gethostbyaddr((const char FAR *)&inaddr,sizeof(in_addr),AF_INET))

, tady jsem podle MSDN přidal 

#include <winsock2.h>
#include <ws2tcpip.h>
#include <stdio.h>

a Project/Settings/Link - Ws2_32.lib do libraries...

kód se mi zkompiluje ale i tak mi CL hlásí že 

error C2065: 'getnameinfo' : undeclared identifier

Nevíte někdo co je špatně? jestli třeba tahle funkce není kompatibilní s touhle verzi VS nebo.. ja nevím..

Zkoušel jsem hledat ale beze štěstí, nikde se nikdo podobným problémem nezaobíral.. Nejsem úpně hloupej a vím že hláška uncleard identifier znamena ze tu funkci "getnameinfo" nemám nikde definovanou, ale ta by měla být součásti tech MS knihoven stejně jako "gethostbyaddr", která funguje bez problému (až na to jak je pomalá, protože používa BIOS lookup).. Někde na nějakým čínským fóru jsem se dočetl že getnameinfo je pro Windows CE, ale na MSDN je mezi minimálníma požadavkama WXP...

Tak nevím.. budu moc rád za jakoukoliv odpověď, popřípadě radu jestli neznáte jinou alternativu "gethostbyaddr", která nebude hostname hledat půl minuty..

Děkuji

Nahlásit jako SPAM
IP: 78.102.118.–
Radek Chalupa
~ Redaktor
+1
Super člen
1. 9. 2013   #2
-
0
-

#1 Origin
Funkce getnameinfo je až od Windows 2000, takže pokud máš VC++ verze 6 a původní hlavičkové soubory, tak v té době ta fce neexistovala a ani nebude v hlavičkách. Popř. pokud tam je tak máš možná nastavenou hodnotu WINVER na nižší než je 0x0500 (tj. Windows 2000).

Jinak podle dokumentace by měla být deklarovaná ve Wspiapi.h.

Radek Chalupa 
- vývoj software na zakázku 
- školení programování (C/C++, WinAPI, ATL, COM, ActiveX, C#, NET Framework, MFC) 
http://www.radekchalupa.cz

Nahlásit jako SPAM
IP: 213.220.211.–
Origin
~ Anonymní uživatel
9 příspěvků
1. 9. 2013   #3
-
0
-

#2 Radek Chalupa
Díky za odpověď.. koukal jsem po tom, našel jsem Wspiapi.h. na netu, stáhl, přidal jsem ho do projektu a includnul, ale teď to zase hází něco jinýho :(

na těch rádcích co jsou označený není nic "závadnýho".. tak nevím.

WSPiApi.h(40) : error C2061: syntax error : identifier 'socklen_t'
WSPiApi.h(63) : error C2146: syntax error : missing ';' before identifier '__attribute__'
WSPiApi.h(63) : fatal error C1004: unexpected end of file found

a ten unexpected end of file je taky docela záhada...

asi začnu trochu experiementovat  novějším VS.. akorát nevím jak ty kódy udělané v tom starém "převést".. protože už jsem kdysi před lety zkoušel přejít na VS2010 a nepovedlo se.. prostě to v něm nešlo zkompilovat.

Nahlásit jako SPAM
IP: 78.102.118.–
Radek Chalupa
~ Redaktor
+1
Super člen
3. 9. 2013   #4
-
0
-

#3 Origin
Překopírováním některých hlaviček to určitě nepůjde. Jednak musíš mít také odpovídající verze statické knihovny (.lib) a ty hlavičky jsou provázané. Musíš si stáhnout (z webu Microsoftu) a nainstalovat celé Windows SDK, ale v případě Visual C++ 6 budeš muset najít nějakou starší verzi která je ještě kompatibilní s VC 6.

Ale určitě bych spíš doporučil třeba VS 2012 Express (je zdarma).

Radek Chalupa 
- vývoj software na zakázku 
- školení programování (C/C++, WinAPI, ATL, COM, ActiveX, C#, NET Framework, MFC) 
http://www.radekchalupa.cz

Nahlásit jako SPAM
IP: 213.220.211.–
Origin
~ Anonymní uživatel
9 příspěvků
3. 9. 2013   #5
-
0
-

#4 Radek Chalupa
No ono mi ani o cenu nejde, sw co používám si rád zaplatím, ale problém je v tom že ty zdrojáky jsou prostě novým visual studiem nekompatibiliní.. teď to zkouším s VS 2012, tak uvidíme, jen co se v tom trochu zorientuju a zjistím kde mám v nastavení nastavit cesty ke slozkám toho co to vyžaduje.. Jak jsem říkal před lety jsem to už zkoušel přenést do vs 2010 a nepovedlo se..

Nové (no.. nejnovější možné pro VS6 :D) windows SDK jsem už stahoval.. bez něj nefungovalo to "gethostbyaddr" a to byla pěkná makačka , na stránce MS to už ani nejde, všechny linky mně házeli jen na web nového visual studia a nakonec jsem ten soubor našel ke stažení na nějakým japonským fóru.. Ono to gethostbyaddr není špatné, ale je to moc pomalé :(

Nahlásit jako SPAM
IP: 78.102.118.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 28 hostů

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý