2017-12-04 29 views
0

나는 이러한 오류의 @@YAHXZ 부분을 이해하고 싶습니다VS 링크 오류 설명에서 "@@ YAHXZ"의 의미는 무엇입니까?

Error LNK2019 unresolved external symbol "int __cdecl func2(void)" ([email protected]@YAHXZ) referenced in function _main .

이 한 예에 불과하지만, 난 그냥 지금 그들을 기억 해달라고 이상한 문자의 다른 유형을 보았다. 각각에 대한 설명을 어디에서 찾을 수 있습니까?

+0

가 핵심이다 : https://docs.microsoft.com/en- 우리/cpp/빌드/참조/데코 레이팅 된 이름 –

+0

이름 mangling [여기]에 대한 읽기 (https://stackoverflow.com/questions/1314743/what-is-name-mangling-and-how-does-it-work) 및 [여기] (https://en.wikipedia.org/wiki/Name_mangling). 모든 구현에는 컴파일러 플래그 및 모든 컴파일러 버전으로 인해 변경할 수있는 자체 이름 꾸미기 스키마가 있습니다. –

답변

3

"name mangling"또는 "이름 장식"이라고합니다.

C++에서 함수 오버로드를 지원하므로 기호 이름은 일반적으로 인수의 유형에 따라 특정 방식으로 생성됩니다.

Microsoft는 이름 장식에 대한 완전한 문서를 제공하지 않습니다
https://msdn.microsoft.com/en-us/library/56h2zst2.aspx

편집 :

여기에 마이크로 소프트 웹 사이트의 공식 문서입니다.
당신이 기호 의미 정확히 알고에 관심이 있다면, 내가 호출 규칙
Agner 안개의 설명서를 읽어 보시기 바랍니다 : 여기에
http://www.agner.org/optimize/calling_conventions.pdf

+0

불행히도 공식 문서에는 실제 사용 된 계획이 문서화되어 있지 않습니다. 데코 레이팅 된 이름이 무엇인지 일반적으로 설명합니다. [이 소스] (https://en.wikiversity.org/wiki/Visual_C%2B%2B_name_mangling)는 위키이지만 정확한 버전을 지정하지는 않지만 좀 더 자세히 설명하는 것으로 보입니다. –

+0

@ FrançoisAndrieux 맞습니다. 불행히도. 이 정보에 대한 자세한 정보를 제공하는 링크가 추가되었습니다. – Macmade