0
當我嘗試使用函數GetLongPathName()編譯我的代碼時,編譯器告訴我函數未聲明。GetLongPathName Undeclared
我已閱讀位於@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++進行編譯。
確切的錯誤信息將幫助我們診斷此問題。另外,你使用的是什麼版本的Windows SDK? – sblom 2010-04-10 06:21:44
我在XP 32位上用VC9編譯。它給了錯誤,但不是你提到的那個。這些錯誤是由於代碼中'char *'和'TCHAR *'的使用不一致造成的。另外,作爲一個側面說明,「return」-10「;'是一個等待中的災難。首先它是const char *(或const TCHAR *),所以如果有人調用你的函數試圖向它寫入內容,你的程序將會崩潰。另外,如果他們再次執行'delete [] buffer'(正常情況下需要),它會崩潰。如果你可以發佈確切的錯誤,那麼我們可能會得到一些線索。 – Naveen 2010-04-10 06:27:36
114 dllmain.cpp'GetLongPathName」未申報(第一次使用此功能) (每個未聲明的標識符是因爲它出現在每個功能只報告一次。) 我不知道,以我在用Windows的SDK版本。我怎麼弄出來的? – 2010-04-10 06:30:11