2009-03-08 3 views
3

Когда я пытаюсь скомпилировать следующее:MinGW линкер не может найти 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; 
} 

Использование команды:

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

Это терпит неудачу с ошибкой:

undefined reference to ``[email protected]'`

Конечно это какая-то глупость с моей стороны, но может ли кто-нибудь сказать мне, что мне здесь не хватает?

ответ

4

Вы должны добавить библиотеку shlwapi для связи:

gcc -o test test.c -lshlwapi 

работает для меня

+0

совершенен! Я попробовал использовать -lshlwapi перед именами файлов, но, я думаю, это происходит. –

+1

Хм, это странно. Это ошибка инструментальной ошибки ИМО: порядок опций не должен иметь значения в этом случае. Использование gcc on linux не имеет этой проблемы. Глядя на gcc -v, я вижу, что -lshlwapi просто игнорируется при установке перед test.c. Возможно, последние gcc (4.4 серии) не имеют этих проблем. –

+0

Извините, я имею в виду 4. * serie. Официально выпущенный mingw gcc является древним (3,4 серии) - если это вариант, вы должны использовать более свежие, либо, компилируя его самостоятельно, либо используя доступные бинарные файлы. –