Неразрешенный внешний символ возник при компиляции C++C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Неразрешенный внешний символ возник при компиляции C++

Сообщение Anonymous »

Я пытаюсь сделать очень простой прямой системный вызов. У меня есть 2 файла: 1 — файл asm и 1 — основной исходный файл. ASM выглядит следующим образом:

Код: Выделить всё

EXTERN wNtAllocateVirtualMemory: DWORD

.CODE
NtAllocateVirtualMemory proc
mov r10, rcx
mov eax, wNtAllocateVirtualMemory
syscall
ret
NtAllocateVirtualMemory endp

END
Исходный файл:

Код: Выделить всё

#include
#include

DWORD wNtAllocateVirtualMemory;

typedef long NTSTATUS;
typedef NTSTATUS* PNTSTATUS;

extern "C" { NTSTATUS NtAllocateVirtualMemory(HANDLE ProcessHandle, PVOID BaseAddress, ULONG_PTR ZeroBits, PSIZE_T RegionSize, ULONG AllocationType, ULONG Protect); }

int main() {
PVOID allocBuffer = NULL;
SIZE_T buffSize = 0x1000;

HANDLE hNtdll = GetModuleHandleA("ntdll");
if (hNtdll == NULL) {
perror("Fail to get handle");
return 0;
}

PVOID pNtAllocateVirtualMemory = GetProcAddress((HMODULE) hNtdll, "NtAllocateVirtualMemory");
wNtAllocateVirtualMemory = *((char*)pNtAllocateVirtualMemory + 4);
NtAllocateVirtualMemory((HANDLE)-1, (PVOID*)&allocBuffer, (ULONG_PTR)0, &buffSize, (ULONG)(MEM_COMMIT | MEM_RESERVE), PAGE_EXECUTE_READWRITE);
}
При изменении типа источника с C++ на C ошибки не возникает, но если тип источника — C++, возникает ошибка.

Код: Выделить всё

Error   LNK2019 unresolved external symbol wNtAllocateVirtualMemory referenced in function NtAllocateVirtualMemory  syscall_direct  
temp.obj  1
Почему это происходит и как это исправить?


Подробнее здесь: https://stackoverflow.com/questions/786 ... ompiling-c
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»