Dll 프로젝트를 만들었습니다.DLL에서 ASM 함수 내보내기 - Visual Studio C++
#pragma once
#include <Windows.h>
#ifdef LAB1DLL_EXPORTS
#define LAB1DLL_API __declspec(dllexport)
#else
#define LAB1DLL_API __declspec(dllimport)
#endif
extern "C"
{
LAB1DLL_API int _stdcall MyProc1(DWORD x, DWORD y);
}
그리고 dllMain (그것의 한 beging) "
#define LAB1DLL_EXPORTS 1
#include "Lab1Dll.h"
임 내 테스트 :
.486
.model flat, stdcall
.code
MyProc1 proc x: DWORD, y: DWORD
xor eax,eax
//......//
ret
MyProc1 endp
end
내 heade 파일이 있습니다 : 나는 하나 개의 기능이 myasm.asm 파일을 생성 내가 그 DLL을 사용하고자하는 응용 프로그램과 내가 가지고있는 함수를 수출했다 :
#include "Lab1Dll.h"
그러나 내 dll 내 MyProc1 함수를 내보내고 있지 않습니다. 해당 DLL에 "일반"기능을 추가하고 그것을 익스포트하면 내 테스트 응용 프로그램에서 사용할 수 있으며 DLL 컴파일 프로세스는 lib 파일을 생성합니다.
정상적인 기능이 없으면 .lib 파일을 가져 오지 않습니다. 그리고 그 도서관에 연결할 수 없습니다.
내 보낸 함수를 작동시키는 방법은 무엇입니까? 또는 처음에 어떻게 내보내는가?
업데이트 : 아래 contens와 함께 .def 파일을 추가하면 완벽하게 작동한다는 것을 알았습니다. 하지만. 나는 그것을해서는 안된다. 그게 __declspec (dllexport)이 나를 위해해야하는 것입니까?
LIBRARY
EXPORTS
MyProc1
데코 레이팅 된/맹 글링 된 이름과 관련이있을 수 있습니다. 'dumpbin'으로 확인하십시오. 'myasm.asm'에 데코 레이팅 된/맹 글링 된 이름을 가진 proc을 정의 해보십시오 (헤더 및 C 소스는 제외). 기타 제안 : http://stackoverflow.com/questions/2804893/c-dll-export-decorated-mangled-names –
@ 루드 어떻게? 나는 그 "장식"에 대해 묻고 있습니다. – Hooch