GetLongPathName Undeclared - PullRequest
       7

GetLongPathName Undeclared

0 голосов
/ 10 апреля 2010

Когда я пытаюсь скомпилировать свой код с помощью функции GetLongPathName (), компилятор сообщает мне, что функция не объявлена.

Я уже прочитал документацию MSDN, расположенную @ http://msdn.microsoft.com/en-us/library/aa364980%28VS.85%29.aspx. Но,хотя я включил эти файлы заголовков, я все еще получаю ошибку необъявленной функции.Какие заголовочные файлы я должен включить при использовании функции?

#include <Windows.h>
#include <WinBase.h>

#define DLLEXPORT extern "C" __declspec(dllexport)

DLLEXPORT char* file_get_long(char* path_original)
{
    long length = 0;
    TCHAR* buffer = NULL;
    if(!path_original)
    {
        return "-10";
    }
    length = GetLongPathName(path_original, NULL, 0);
    if(length == 0)
    {
        return "-10";
    }
    buffer = new TCHAR[length];
    length = GetLongPathName(path_original, buffer, length);
    if(length == 0)
    {
        return "-10";
    }
    return buffer;
}

И, если это имеет значение, я сейчас компилирую с использованием Dev-C ++ на 64-битной Windows Vista.

1 Ответ

1 голос
/ 10 апреля 2010

Dev-C ++ не поддерживает Windows API. На самом деле, это даже не близко. Вполне вероятно, что функция GetLongPathName не объявлена ​​в winbase.h, который поставляется с этим компилятором (на самом деле это старая версия MinGW).

Вы можете использовать бесплатный компилятор, который поставляется с Windows SDK , чтобы обойти эту проблему. Это тот же компилятор, который поставляется с Visual Studio, хотя это только командная строка.

Вы также можете использовать Visual C ++ Express Edition , который является бесплатным и предоставляет функции, аналогичные DevCPP.

...