2009-03-08 6 views
3

Wenn ich versuche, die folgenden zu kompilieren:mingw Linker kann nicht finden PathAppend

#include <windows.h> 
#include <shlwapi.h> 

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { 
    char firstPart[MAX_PATH] = "c:\\windows"; 
    char secondPart[MAX_PATH] = "system32"; 
    PathAppend(firstPart, secondPart); 

    return 0; 
} 

Mit dem Befehl:

c:\mingw\bin\gcc -mwindows -mno-cygwin -o test test.c 

es mit dem Fehler fehlschlägt:

undefined reference to ``[email protected]'`

Sicher Das ist Dummheit meinerseits, aber kann mir jemand sagen, was ich hier vermisse?

Antwort

4

Sie benötigen die shlwapi Bibliothek für die Verknüpfung hinzuzufügen:

gcc -o test test.c -lshlwapi 

Werke für mich

+0

Perfect! Ich hatte versucht, die -lshlwapi vor den Dateinamen zu verwenden, aber ich denke, es geht nach. –

+1

Hm, das ist seltsam. Es ist ein Toolchain Bug IMO: Die Reihenfolge der Optionen sollte in diesem Fall keine Rolle spielen. Die Verwendung von gcc unter Linux hat dieses Problem nicht. Betrachtet man gcc -v, kann ich sehen, dass das -lshlwapi einfach ignoriert wird, wenn es vor test.c gesetzt wird. Vielleicht haben die letzten gcc (4.4 serie) diese Probleme nicht. –

+0

Sorry, ich meine 4. * serie. Das offiziell veröffentlichte mingw gcc ist uralt (3.4 serie) - wenn das eine Option ist, sollten Sie neuere verwenden, entweder indem Sie es selbst kompilieren oder verfügbare binäre da draußen verwenden. –

Verwandte Themen