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 declared
die 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 #endif
Falls GetComputerNameEx doch bereits definiert ist (wenn man zB mit dem MS PlatformSDK) kompiliert, dann kann man noch ein
#ifndef GetComputerNameEx //... #endif
darum 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 declared
Meep 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.