2015-01-12 2 views
1

내 MASM dll에 도움이 필요합니다. 배열의 요소를 세고 있는데 다른 배열의 메모리를 할당하고 싶습니다. C에서는 벡터를 사용하고 있습니다. 나는 C# 응용 프로그램에서이 라이브러리를 사용하고 undefined symbol : GetProcessHeapundefined symbol : HeapAllocMASM dll 메모리 할당

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

또는

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

하지만지고있어 오류 : 내가 사용하려고했습니다. 예제를 보여줄 수 있습니까? 어떻게 동적으로 메모리를 할당 할 수 있습니까?

+0

어셈블리 코드를 dll로 컴파일했는데 C# 응용 프로그램에서 해당 DLL을 사용하려고합니까? 아니면 어셈블리 코드에서 C 함수를 호출하려고합니까? –

답변

2

해당 라이브러리와 링크해야합니다. the MSDN page for HeapAlloc을 보면 kernel32.dll에 있다는 것을 알 수 있습니다.

MASM32를 사용한다고 가정하면 kernel32.inc (프로 시저 프로토 타입 용)과 kernel32.lib (연결 용)이 MASM32 설치에 포함되어 있어야합니다.

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

당신이 그것을 조금 더 복잡 얻는 kernel32.lib 파일이없는 경우,하지만 kernel32.dll을로드 LoadLibrary를 사용하여 다음 얻어서 여전히 해 드리겠습니다 : 그래서 당신은 당신의 어셈블리 파일에 다음 줄을 추가해야 HeapAlloc의 주소는 GetProcAddress과 함께 작동합니다.