win api mit gcc
-
hola leute
laut win-sdk ist in der winbase.h die funktion GetComputerNameEx definiert. beim MinGW developer mit gcc gibts die funktion aber nirgendwo.
wie kann ich funktion nun doch noch benutzen ?wie kann ich mit dem gcc libs einbinden ? mit #pragma comment(lib,lib-name) sagt er, das er sie ignoriert.
kann mir da jemand weiter helfen ?
cermy
Meep Meep
-
Habs jetzt nicht getestet, aber bei der aktuellen MinGW Version ist GetComputerNameEx dabei
"libkernel32.a".
Für die Deklaration in winbase.h muss _WIN32_WINNT >= 0x0500 definiert sein.
-
Meep Meep schrieb:
hola leute
wie kann ich mit dem gcc libs einbinden ? mit #pragma comment(lib,lib-name) sagt er, das er sie ignoriert.kann mir da jemand weiter helfen ?
cermy
Meep Meep
#pragma ist ja auch böse

-l sollte helfen.
-
hoi groovemaster
hab jetzt die aktuelle mingw-version drauf getan.
die _WIN32_WINNT ist groesser als 0x500trotzdem meint der compiler immer noch
WinHelper.cpp:10: error: `::GetComputerNameEx' has not been declareddie anderen sachen funktionieren alle, nur GetComputerNameEx will net so recht.
wo koennte der fehler sonst noch liegen ? von der person vorm bildschirm mal abgesehen ?
Meep Meep
-
Hehe, da scheint wohl was in der Header zu fehlen. GetComputerNameExA und GetComputerNameExW sind vorhanden, das typische UNICODE #ifdef fehlt aber. Naja, das kann man notfalls selbst zusammenbasteln (Auszug aus PlatformSDK):
winbase.h schrieb:
#ifdef UNICODE #define GetComputerNameEx GetComputerNameExW #else #define GetComputerNameEx GetComputerNameExA #endifFalls GetComputerNameEx doch bereits definiert ist (wenn man zB mit dem MS PlatformSDK) kompiliert, dann kann man noch ein
#ifndef GetComputerNameEx //... #endifdarum schreiben.
-
re
das der UNICODE teil fehlt, hatte ich auc bemerkt. aber eigendlich muesste ich ja dann wenigstens GetComputerNameExA benutzen koennen. funkt aller dings auch net
WinHelper.cpp:10: error: `::GetComputerNameExA' has not been declaredMeep Meep
-
Meep Meep schrieb:
das der UNICODE teil fehlt, hatte ich auc bemerkt. aber eigendlich muesste ich ja dann wenigstens GetComputerNameExA benutzen koennen. funkt aller dings auch net
Also irgendwie scheint noch mehr bei dir zu fehlen. Hab jetzt einfach mal ein Minimalbeispiel probiert (mit eingefügtem UNICODE #ifdef in winbase.h), und das funktioniert problemlos.
#define _WIN32_WINNT 0x0500 #include <windows.h> int main() { TCHAR name[256]; DWORD size = 256; GetComputerNameEx(ComputerNameNetBIOS, name, &size); return 0; }Auch GetComputerNameExA und GetComputerNameExW funktioniert prima.