내가 C++ 7.1C++ 7.1 이름 변환을 해제하는 방법? :(
내가 지금뿐만 아니라 VS2003에서 컴파일 할 필요가 VS 2010에서 컴파일 관리 VS 2003 년에 작성된 라이브러리 코드를 가지고있다.
문제는 내가 VS2003 이름 맹 글링을 막을 수 없다!
을 나는 __stdcall 함수 이름 앞에 __declspec (dllexport)를 사용하고 나 또한 통근 "C"블록에 코드를 넣어.
을 난 아직도 망가 함수 이름을 얻을 내가 그것을 컴파일 할 때 VS 20003. .def 파일이 필요 없다. __declspec (dllexport)를 사용 하시겠습니까? 내가 망가 함수 이름을 얻을 왜
extern "C"
{
void __declspec(dllexport) __stdcall FreeMyObject(MyObjectHandle pObj)
{
delete pObj;
}
}
는 또한 "전화도 협약"__cdecl (/ 하나님)입니다 :
희는 코드? 컴파일러 옵션에서 설정해야 할 옵션이 있습니까?
stdcall 장식 인 _FreeMyObject @ 4로 장식됩니다. C++ 이름 맹 글링과 같은 것은 아닙니다. C와 호환되지 않습니다. 이름을 바꾸려면 .def 파일을 사용해야합니다. –
고마워요, 그것이 stdcall 때문에 그것의 것 같아요. 그래서 컴파일러는 VS2010에서 다르게 동작합니까? 왜냐하면 def 파일을 사용하지 않아도 작동하기 때문입니다. 방법에 의해 대답 주셔서 감사합니다 :) – QProgrammer
그것은 매우, 아주 오랫동안 이런 식으로되어 왔습니다. VS2010과 다른 점은 없습니다. 유일한 합리적인 추측은 VS2010 프로젝트에서 64 비트 코드를 작성한다는 것입니다. 어느 쪽이 이름 장식을 필요로하지 않는지, 단 하나의 호출 규칙이 있습니다. 당신은 추측 할 다른 것을 남겨 두지 않습니다. –