Когда я пытаюсь скомпилировать свой код с помощью функции GetLongPathName(), компилятор сообщает мне, что функция не объявлена.GetLongPathName Undeclared
Я уже прочитал документацию 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.
Точное сообщение об ошибке поможет нам диагностировать это. Кроме того, какую версию Windows SDK вы используете? – sblom
Я скомпилировал с VC9 на XP 32 бит. Это дало ошибку, но не тот, о котором вы говорили. Ошибки были из-за несогласованного использования 'char *' и 'TCHAR *' в коде. Кроме того, в качестве побочного примечания, 'return '-10"; 'является катастрофой в ожидании. Прежде всего это const char * (или const TCHAR *), поэтому, если кто-то, кто называет вашу функцию, пытается что-то записать в нее, ваша программа выйдет из строя. Кроме того, если они 'delete [] buffer' (который требуется для обычного случая) снова, он сработает. Если вы можете опубликовать точную ошибку, мы можем получить некоторые подсказки. – Naveen
114 dllmain.cpp 'GetLongPathName» необъявленная (сначала использовать эту функцию) (Каждый необъявленный идентификатор сообщается только один раз для каждой функции появляется в.) Я не уверен относительно того, какая версия Windows SDK Я использую , Как мне это понять? –