dll 파일과 name mangling 관련 질문드립니다.
안녕하세요. 강의 잘 보고 있습니다.
강의를 보는데 갑자기 궁금한 것이 생겨서 질문 드립니다.
exe 파일에서 필요할 때마다 dll을 참조하여 호출하는 것으로 이해하고 있습니다.
dll엔 이미 함수 symbol이 정의되어 있겠죠.
예를 들어 add(int a, int b) 함수를 dll로 만들었다고 가정하면 일반적인 c라면 함수 심볼이 _add라고 예상되지만, C++ 이라면 _add가 아니라 다른 형태의 심볼이 만들어질거라 생각이 됩니다.
그런데 exe을 만드는 개발자 입장에서 생각해보면 무엇으로 만들어질지 모르는 심볼을 예측할 수 없으니 c처럼 _add와 같이 확실한 symbol을 선호할 것 같은데, 그러면 dll 파일을 c++로 만들 때 함수 앞에 extern "C" 키워드를 사용하나요?
만약 1번 답이 맞다면 추가로 궁금한 것이 있습니다. 제가 알기론 C와 C++의 차이가 name mangling 뿐만 아니라 스택에 쌓이는 매개변수도 차이가 있다고 들었습니다. 그런데 C++로 만드는 exe 파일과 extern "C"로 선언한 dll을 같이 사용하면 문제가 생기지 않나요?
부족한 것이 많아 질문에 오류가 있을 수 있습니다. 제가 잘못 알고 있는 부분은 피드백 주신다면 다시 공부하겠습니다.
감사합니다.
답변 2
0
맞습니다. 보통 그렇게 합니다.
아니오. 잘못 알고 있는 것입니다. name mangling이 매개변수까지 포함해 유일한 식별자를 계산하는 것은 맞지만 스택에 매개변수를 넣는 것까지 관여하지는 않습니다. 정확히 말해 이는 함수 호출 규약에 관련된 것입니다. 참고하시기 바랍니다.
0
안녕하세요, 인프런 AI 인턴입니다.
님의 질문에 대한 답변으로, 강의에서 직접 답변한 내용과 유사한 주제로 다른 질문의 답변을 찾았습니다. 해당 내용은 C++에서 만든 DLL 파일과 name mangling에 관한 것이며, extern "C" 키워드의 사용과 관련된 설명이 포함되어 있습니다.
질문하신 내용의 답변을 얻기 위해 아래의 링크를 참조하시면 도움이 될 것입니다.
각 링크를 클릭하시면, DLL과 관련된 구체적인 설명을 확인하실 수 있으며, 구체적인 문제 해결 방법이나 개념 설명을 제공받으실 수 있습니다.
질문에 대한 정확한 답변과 추가 학습을 위해 위 링크들을 방문해 보시기 바랍니다.
인터페이스 상속과 추상 자료형 2:00 질문
0
50
1
13분 42초의 예제
0
52
2
네임스페이스 스코프 내에서 정의된 변수, 함수들이 위치하는 곳 질문
0
47
1
소멸자 가상함수 질문
0
55
2
이동생성자의 매개변수로 넘어가는 임시객체의 값 유지 관련하여 질문이 있습니다.
0
63
2
임시 객체 복사 생성자 질문드립니다
0
66
2
변수 바인딩에 대한 의문점
0
113
1
C++ 파일 구조 질문
0
128
1
빈 포인터에 멤버함수 호출
0
104
1
파생클래스에서 virtual함수를 선언에 대한 질문입니다.
0
116
2
순수 가상 클래스 선언과 일반 인트 변수의 선언과 다른가요?
0
137
2
안녕하세요. 이동의미론에 대해 제가 잘 이해했는지 궁금합니다.
0
132
1
인스턴스의 개념에 대해 int a(3), int(5) 예시를 바탕으로한 질문입니다.
0
189
2
식별자 검색 순서 관련 namespace 생략 관련 오류에 관한 질문
0
175
1
마지막 주소록 예제 c 파일 한글 깨짐 현상
0
190
1
nullprt vs null
0
153
2
쓸데없지만 질문드리고싶습니다
0
181
1
복사 생성자 질문 드립니다.
0
221
1
생성자 궁금한거 있습니다
0
218
2
단순대입 오류 발생 이유
0
235
1
네가지 형변환 강의 질문
0
283
1
CMyString Step10 강의 질문
0
174
1
임시 객체와 보이지 않는 복사 생성 강의 질문
0
268
2
섹션8 3번째 강의 (실습 프로젝트 - 문자열 필터개선) 질문
0
219
2





