MASM dll выделение памяти

Мне нужна помощь с моей MASM DLL. Я считаю элементы в массиве, затем я хочу выделить память для другого массива, в C я использую вектор. Я пытался использовать:

invoe GetProcessHeap
invoke HeapAlloc, eax, HEAP_NO_SERIALIZE + HEAP_ZERO_MEMORY, <size>

или же

invoke GlobalAlloc, GMEM_ZEROINIT, <size>
mov tab, eax

но я получаю ошибки undefined symbol : GetProcessHeapundefined symbol : HeapAlloc

Я использую эту библиотеку в приложении C#. Можете ли вы показать мне пример, как я могу динамически распределять память?

1 ответ

Решение

Вам нужно сделать ссылку на соответствующую библиотеку. Если вы посмотрите на страницу MSDN дляHeapAlloc вы увидите, что он расположен в kernel32.dll,

Предполагая, что вы используете MASM32, должно быть kernel32.inc (для прототипа процедуры) и kernel32.lib (для связи) входит в комплект вашей установки MASM32. Таким образом, вам нужно добавить следующие строки в ваш файл сборки:

include \masm32\include\kernel32.inc
includelib \masm32\lib\kernel32.lib

Если у вас нет kernel32.lib файл становится немного сложнее, но все еще выполнимо с помощью LoadLibrary загрузить kernel32.dll а затем получить адрес HeapAlloc функция с GetProcAddress,

Другие вопросы по тегам