C DLL 장식 이름 내보내기
모듈 정의(.def)를 사용하여 C DLL에서 함수 이름을 내보낼 때 다음을 발견했습니다. 파일 또는 C 스타일 extern "C" __declspec(dllexport) 구문을 사용하면 내보낸 함수 이름이 추가 정보로 장식됩니다. 이는 함수 매개변수 및 유형에 대한 정보를 함수 이름에 인코딩하는 프로세스인 C 이름 맹글링으로 인해 발생합니다.
이 추가 장식을 제거하려면 #pragma 주석 컴파일러 지시문을 사용할 수 있습니다. 코드에 다음 줄을 추가하면 됩니다.
#pragma comment(linker, "/EXPORT:SomeFunction=_SomeFunction@@@23mangledstuff#@@@@")
내보낼 함수에 대해 데코레이팅된 이름을 지정할 수 있습니다. 이 경우 "SomeFunction@@@23mangledstuff#@@@@"은 "SomeFunction" 함수의 장식된 이름입니다.
또는 다음 pragma를 사용하여 장식된 이름을 자동으로 생성할 수 있습니다.
#pragma comment(linker, "/EXPORT:\"" __FUNCTION__ ""= "" __FUNCDNAME__)
이 pragma는 FUNCTION과 FUNCDNAME 매크로를 사용하여 함수 이름과 데코레이팅된 버전을 pragma에 삽입합니다.
이러한 pragma 중 하나를 사용하면 dumpbin.exe로 볼 때 다음과 같은 출력이 발생합니다.
SomeFunction
이 방법을 사용하면 함수 이름에서 원하지 않는 장식을 제거하면서 내보낸 함수의 기능을 유지할 수 있습니다.
위 내용은 이름 장식 없이 C DLL 함수를 내보내는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!