"GetName"이라는 함수를 내보내는 DLL을 만들려고합니다. 나는 다른 코드가 맹 글링 된 함수 이름을 알 필요없이이 함수를 호출 할 수 있기를 바란다.DLL의 내 보낸 함수의 이름 - mangling을 어떻게 중지합니까?
내 헤더 파일은 다음과 같습니다
#ifdef __cplusplus
#define EXPORT extern "C" __declspec (dllexport)
#else
#define EXPORT __declspec (dllexport)
#endif
EXPORT TCHAR * CALLBACK GetName();
내 코드는 다음과 같습니다
내가 구축#include <windows.h>
#include "PluginOne.h"
int WINAPI DllMain (HINSTANCE hInstance, DWORD fdwReason, PVOID pvReserved)
{
return TRUE ;
}
EXPORT TCHAR * CALLBACK GetName()
{
return TEXT("Test Name");
}
이 DLL이 여전히 이름으로 기능을 보냅니다 "_GetName 0 @" .
내가 뭘 잘못하고 있니?
헤이 멋진이 정확히 내가 필요로하는 거의 것입니다. 이제 다른 방법으로 원한다면 어떻게 될까요? 나는 C 함수를 가지고 있고, C++ 멤버 함수 (vtable, 모든것을 다 호출하는 규칙)가 될 수 있지만, 컴파일러는 그 이름을 맹 글링해야한다고 주장한다. – Pyjong
예, C 및 C++은 다른 이름 장식 규칙을 사용합니다. C++ 클래스 멤버에서 C 함수를 호출 할 래퍼를 생성해야합니다. – Dewfy
.DEF 파일 만 이름 변환을 비활성화하는 유일한 방법입니다. 'extern "C"'는 여전히 이름 장식을 사용합니다. C++이 필요로하는 것처럼 장황하지는 않습니다. – IInspectable