나는 함수 DLLEXPORT void* GetBase(HANDLE hProc)
을 포함하는 DLL을 만들고 있는데 컴파일 할 때 종속성 워커로 열면 "GetBase"라는 이름의 함수가 없습니다. "GetBase @@ YAPAXPAX @ Z"만 볼 수 있습니다. 이게 뭐가 잘못 됐어? 저는 Visual C++ 2013을 사용하고 있으며이를 릴리스로 컴파일했습니다.DLL의 잘못된 함수 이름
0
A
답변
0
함수에 "잘못"이있는 것은 없습니다. 그것은 "맹 글링"되었습니다. 즉, 함수 이름에 컴파일러의 유형 정보를 추가했습니다. 이것은 C++에서 오버로드를 지원하는 방법입니다. 동일한 이름을 가진 함수이지만 다른 매개 변수를 사용하면 함수 이름이 달라집니다.
DLL에 debug info attached이있을 수도 있습니다.이 이름은 다른 이름을 사용할 수도 있습니다.
귀하의 질문에있는 "c"태그는 모두 번거롭기 만합니다. C에는 과부하가 없으므로 이름 맹 글링이 필요하지 않습니다.
관련 문제
- 1. DLL의 함수
- 2. DLL의 심볼 이름 확인
- 3. dll의 함수 사용
- 4. epanet2.dll의 호출 함수
- 5. 클래스 함수 내부에서 DLL의 extern 함수 호출
- 6. 의 BigQuery : "잘못된 함수 이름"BigQuery에서
- 7. DLL의 오버로드 된 함수 액세스
- 8. Windows DLL의 서명으로 함수 찾기
- 9. DLL의 함수 이름의 최대 길이
- 10. 디 컴파일 DLL의 함수 대체
- 11. DLL의 멤버 함수 호출 (게임용 AI 라이브러리)
- 12. COM DLL의 서수에서 함수 이름을 얻는 방법
- 13. 잘못된 열 이름 'allocationStart'
- 14. MC++ 코드에서 C# DLL의 함수 호출
- 15. PowerBuilder 10.0에서 DLL의 외부 함수 호출 오류
- 16. 삽입 된 프로세스에서 DLL의 함수 호출
- 17. DLL의 내 보낸 함수의 이름 - mangling을 어떻게 중지합니까?
- 18. 패키지 이름 = 주 함수 이름
- 19. SQL - 자바 : 잘못된 열 이름 : 잘못된 열 이름
- 20. 잘못된 열 이름 'a'입니다. 잘못된 열 이름 'a'
- 21. 잘못된 개체 이름 '#subodh은'
- 22. 잘못된 웹 메소드 이름
- 23. java.lang.NoClassDefFoundError가 : - 잘못된 이름 :
- 24. 잘못된 열 이름 'txn_date'
- 25. 잘못된 개체 이름 'table1'
- 26. 잘못된 열 이름 'ProposalTypeID'
- 27. 잘못된 개체 이름 #temp
- 28. Github 잘못된 사용자 이름
- 29. 잘못된 개체 이름 'dbo.EdmMetadata'
- 30. 잘못된 개체 이름 sysservers
코드를 C++로 작성합니다. 파일 확장명은 .cpp 또는 .c입니까? – cup
파일 확장명은 ".cpp"입니다. –
이것은 완전히 정상입니다. C++ 컴파일러는 함수 이름을 장식합니다 *. 오버로드 된 메소드가 다른 링크 이름을 갖도록 필요합니다. 'extern "C"'를 사용하여 그것을 억제하십시오. 이를 억제하지 마십시오. 함수 선언을 변경하고이를 사용하는 코드를 업데이트하지 않을 때 문제를 피할 수있는 좋은 방법입니다. –