Я столкнулся с ошибкой компоновщика в моем коде. Я пытаюсь скомпилировать с помощью командной строки Visual Studio (2010) в Win-7 X64 bit m / c. Ошибка, которую я вижу, приведена ниже.
dust2.obj
dust2.obj: error LNK2019: неразрешенный внешний символ _NtOpenFile @ 24 указано в функции _main
dust2.obj: ошибка LNK2019: неразрешенный внешний символ _RtlAnsiStringToUnicodeStr ing @ 12 упоминается в функции _main
dust2.obj: error LNK2019: неразрешенный внешний символ _RtlInitAnsiString @ 8 ссылка включен в функцию _main
dust2.exe: фатальная ошибка LNK1120: 3 неразрешенных внешних объекта
Упрощенная версия моего кода выглядит так:
#include
#include
#include
using namespace std;
int main()
{
NTSTATUS Status;
OBJECT_ATTRIBUTES Obja;
HANDLE SourceFile;
PUNICODE_STRING PathName=0;
PANSI_STRING p_path=0;
const char* ccp_path = "D:\\txt.txt";
RtlInitAnsiString( p_path,ccp_path );
RtlAnsiStringToUnicodeString( PathName, p_path, true );
IO_STATUS_BLOCK IoStatusBlock;
wprintf(L"%s", PathName->Buffer);
InitializeObjectAttributes(
&Obja,
PathName,
OBJ_CASE_INSENSITIVE,
NULL,
NULL
);
Status = NtOpenFile(
&SourceFile,
FILE_LIST_DIRECTORY | FILE_READ_EA | FILE_READ_ATTRIBUTES,
&Obja,
&IoStatusBlock,
FILE_SHARE_READ | FILE_SHARE_WRITE,
FILE_DIRECTORY_FILE | FILE_OPEN_FOR_BACKUP_INTENT | FILE_OPEN_REPARSE_POINT
);
if(SourceFile == INVALID_HANDLE_VALUE){
printf("\nError: Could not open file\n");
return 0;
}
cout<
В другом сообщении на этом форуме было упомянуто решение такого рода проблем. включить #pragma .
Я попробовал это решение, добавив #pragma как это
#pragma comment(lib, "ntdll")
, но при компиляции я вижу еще одну ошибку, которая говорит: «ССЫЛКА: фатальная ошибка LNK1104: невозможно открыть файл 'ntdll.lib '".
Буду очень признателен за вашу помощь в решении этой проблемы. Спасибо ..