0
DLL을 만들고 .def 파일로 함수 이름을 정의하려고하는데 작동하지 않는 것 같습니다. 나 DLL에 대한 나의 헤더 파일은 다음과 같습니다.DEF로 DLL을 만들어 함수 이름을 정의하십시오.
#ifdef ColorDLL_EXPORTS
#define ColorDLL_API
#endif
int ColorSelect(int i);
CPP 파일 :
#include "stdafx.h"
#include "ColorDLL.h"
#using <ColorDiologeClass.dll>
int ColorSelect(int i){
ColorDiologeClass::Class1::ColorReturn(1);
return 1;
}
내가 솔루션 탐색기에서 마우스 오른쪽 버튼을 클릭하여 ColorDLL.def을 추가하고 .DEF 파일은 다음과 같습니다 파일 추가 : 내가 DUMPBIN을 사용하는 경우
LIBRARY "ColorDLL"
EXPORTS
ColorSelect
은/이름에 대한 결과가
name
ColorSelect = [email protected]@[email protected] (int __cdec1 ColorSelect(int))
입니다 수출 이름이 I는 = 부분을 제거하려면 어떻게해야이
name
ColorSelect
처럼 보이는 곳
나는 그것을 본 적 있어요?
그래서 나는 당신에게'__declspec (dllexport)'을 가져 갔고 나는 여전히 같은 문제를 겪고있다. '=? ColorSelect @@ YAHH @ Z (int __cdec1 ColorSelect (int))'를 어떻게 제거 할 수 있습니까? 또는 동등한 것이 더 나은 무엇입니까? – user1334858
내부적으로 함수 이름이 시작하는 것에 맹 글링됩니다. With =는 동일한 서수에 대한 대체 이름을 나타냅니다. declspec없이 다시 빌드 했습니까? 왜 그런 식으로 .DEF로 번거 로움을하고 싶어? 유용성 만 방해합니다. –
그래, = 그냥 다른 이름이 있음을 의미합니까? 그래, 나는 __declspec (dllexport)없이 리빌드했고 dumpbin을 사용할 때도 같은 결과를 얻었다. 나는 이것을 JMP와 함께 사용하려하고 DLL 내부에 정확한 함수 이름을 주어야하기 때문에 C++이 이름을 꾸미기 때문에 함수 이름을 정의하기 위해 .DEF를 만들어야 만했다. – user1334858