GetLongPathName未声明

时间:2010-04-10 06:15:36

标签: c++ dev-c++

当我尝试使用函数GetLongPathName()编译我的代码时,编译器告诉我该函数未声明。

我已经阅读了位于@ http://msdn.microsoft.com/en-us/library/aa364980%28VS.85%29.aspx的MSDN文档。但是,即使我包含这些头文件,我仍然得到未声明的函数错误。在使用该函数时,我应该包含哪些头文件?

#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;
}

而且,如果它有所作为,我目前正在使用Windows Vista 64位上的Dev-C ++进行编译。

1 个答案:

答案 0 :(得分:1)

Dev-C ++对Windows API的支持尚未完成。实际上,它甚至都不是很接近。完全可能是GetLongPathName函数未在winbase.h中声明,该函数随编译器一起提供(实际上是MinGW的旧版本)。

您可以使用Windows SDK附带的免费编译器来解决此问题。它与Visual Studio一起提供的编译器相同,但它只是命令行。

您还可以使用Visual C++ Express Edition,它是免费的,并提供与DevCPP类似的功能。