def파일에서 export 한 뒤, 함수 이름을 써주어야 하는데 이렇게 하기 귀찮다면 코드 안에서 pragma 키워드를 이용할 수 있다.
다음과 같이에 export 시킬 함수를 적고 에 function의 mangled-name을 적어주면된다.
여기서 mangled-name을 구하는 방법이 있는데 보통은
1. 함수 이름 앞에 _를 붙인다.
2. 함수 이름 뒤에 @를 붙인다.
3. @뒤에 함수 인자의 총 바이트 수를 추가한다.
예를들어
와 같은 구문이 있다면 a함수의 mangled-name은 _a@4 가 된다. 마찬가지로,
와 같은 함수는 _a@8이 된다.
이와 같이 <export>과 <function>을 결정한 뒤 다음과 같이 export 하면된다.
P.S. 이 작업을 한 뒤 기존에 export하던 함수의 __declspec(dllexport)부분을 삭제해야 여기서 export한 함수 이름만 표시되는것을 볼 수 있다
다음과 같이
여기서 mangled-name을 구하는 방법이 있는데 보통은
1. 함수 이름 앞에 _를 붙인다.
2. 함수 이름 뒤에 @를 붙인다.
3. @뒤에 함수 인자의 총 바이트 수를 추가한다.
예를들어
int a(int arg1);
와 같은 구문이 있다면 a함수의 mangled-name은 _a@4 가 된다. 마찬가지로,
int a(int arg1, int arg2);
와 같은 함수는 _a@8이 된다.
이와 같이 <export>과 <function>을 결정한 뒤 다음과 같이 export 하면된다.
#pragma comment(linker, "/export:<export>=<function>")
P.S. 이 작업을 한 뒤 기존에 export하던 함수의 __declspec(dllexport)부분을 삭제해야 여기서 export한 함수 이름만 표시되는것을 볼 수 있다



Attribution/Share Alike 2.0 license






