기본 프로젝트에 ClassA라는 클래스가 있고이 하위 프로젝트에 ClassA라는 클래스 이름의 정적 라이브러리 용으로 작성된 하위 프로젝트가있는 경우 컴파일러가 두 클래스를 구별하는 방법을 성공적으로 빌드하고 실행할 수 있는지 궁금합니다.라이브러리 및 프로젝트의 동일한 클래스 이름
1
A
답변
2
저는 링커가 어떻게 작동하는지에 대해 이야기하고 있다고 생각합니다.
정적 라이브러리는 확장명이 ".o"인 여러 재배치 가능 객체 파일의 모음입니다. 프로젝트의 소스 파일도 재배치 가능한 객체 파일로 컴파일됩니다.
링커가 작동하면 코드에 사용 된 ClassA
과 같은 기호가 해결됩니다. 재배치 가능한 객체 파일에서 발견 된 경우 - rof1.o
이라고 가정 해 봅시다. rof1.o
을 실행 파일에 흡수합니다. 링커가 심볼 해석을 시도 할 때 재배치 가능한 객체 파일의 검색 순서에 따라 ClassA
이 사용됩니다. 검색 순서는 우리에게 결정적이지 않기 때문에 다른 클래스 이름을 사용해야합니다.
다른 링크 플래그를 '-all_load'로 설정하면 링커가 모든 재배치 가능 객체 파일을 실행 파일로 결합하려고 시도한다는 것을 나타냅니다. 그런 다음 두 개 이상의 동일한 기호가 있으면 "중복 된 기호"오류가 표시됩니다.
1
클래스 중 하나의 이름을 변경해야합니다. 그렇지 않으면 컴파일러에서 코드를 작성할 때 오류가 발생합니다.
관련 문제
- 1. 동일한 클래스 라이브러리 프로젝트의 POCO와 non-POCO
- 2. 클래스 라이브러리 프로젝트의 리소스
- 3. Android 라이브러리 프로젝트의 클래스 재정의
- 4. 클래스 라이브러리 프로젝트의 C# Custom TypeConverter
- 5. 동일한 프로젝트의 두 Google 플레이 라이브러리
- 6. 참조 C# 프로젝트의 C++/CLI 클래스 라이브러리
- 7. 클래스 라이브러리 프로젝트의 MVC 5 툴링 지원
- 8. 클래스 라이브러리 프로젝트의 한 클래스를 asp.net의 다른 클래스 라이브러리 프로젝트의 다른 클래스에 임베드하는 방법은 무엇입니까?
- 9. 종속성이 다른 동일한 Maven 동일한 클래스 이름
- 10. 클래스 라이브러리 프로젝트의 최종 응용 프로그램
- 11. 다른 클래스 라이브러리/프로젝트의 WPF Prism ViewModelLocator
- 12. 클래스 라이브러리 프로젝트의 .NET 설정 파일
- 13. 클래스 라이브러리 프로젝트의 Settings.settings 및 Resource.resx 파일 참조
- 14. 두 프로젝트의 공유 라이브러리
- 15. 동일한 프로젝트의 WCF 및 ASMX
- 16. . 라이브러리 프로젝트의 .NET app.config
- 17. 라이브러리 이름
- 18. Qt 프로젝트의 사용자 이름
- 19. 클래스 라이브러리 프로젝트의 언어 관련 리소스 파일에 문제가 발생했습니다.
- 20. iOS 프로젝트의 충돌 라이브러리
- 21. Android 및 Spring MVC 프로젝트의 공유 클래스
- 22. Enterprise 라이브러리 5 로깅 클래스 이름
- 23. 내 라이브러리의 타사 라이브러리 클래스 이름 바꾸기
- 24. Xcode : C++ : 프로젝트의 라이브러리 포함
- 25. 프로젝트의 라이브러리 문제
- 26. System.Web.Optimization은 클래스 라이브러리 프로젝트의 면도기 뷰 파일에서 사용할 수 없습니다.
- 27. 라이브러리 프로젝트의 리소스를 덮어 씁니다.
- 28. Android 프로젝트의 Java 라이브러리
- 29. 안드로이드 라이브러리 프로젝트의 java.lang.verifyerror
- 30. Eclipse 플러그인 프로젝트의 라이브러리
라이브러리의 클래스는 UIView, NSMutableArray 등과 같이 무언가로 미리 작성되어야합니다. 이렇게하면 충돌을 피할 수 있습니다. – Fonix