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 0x500

    trotzdem 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.


Anmelden zum Antworten