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 : GetProcessHeap
undefined 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
,