나는 기존의 C++ 코드를 가지고 있으며, 다시 작성하려고합니다.일부 클래스가 나중에 dlopen에 의해 추가 될 것임을 C++ 링커에 알리는 방법
프로젝트의 코드 일부를 ".so"공유 라이브러리로 가져 와서 "dlopen"으로 동적으로로드하려고합니다.
필자는 런타임에 새로운 모듈을 동적으로로드 할 수있는 동적로드 메커니즘을 작성했습니다.
이제 주 프로젝트에서 기존 모듈을 분리하려고합니다.
예를 들어 주 프로젝트에서 모듈 "X"를 추출하고 나중에로드 할 수있는 공유 라이브러리를 만들었지 만 주 프로젝트의 일부는 모듈 X의 클래스를 직접 사용하므로 아직 변경할 수 없습니다.
모듈 X의 헤더 파일을 사용하여 프로젝트를 컴파일 할 수 있지만 링커에서 "정의되지 않은 참조"오류가 발생합니다.
어떻게하면 이러한 클래스가 런타임에 dlopen 메커니즘에 의해 나중에 추가 될 것이라고 C++ 링커에 알릴 수 있습니까?
참고 : 모듈 "X"의 ".so"파일을 "/ lib"폴더에 복사하여 프로젝트를 링크하고 실행할 수 있으며 "-lX"플래그로 링크 할 때 사용할 수 있지만이 파일 형식을 삭제하면/lib 폴더에서 시작시 프로젝트가 실패합니다.
예,하지만 링크 종속성을 제거하고 싶습니다. 분리 된 모듈 함수를 호출하는 프록시 클래스로 X 클래스를 변경했습니다. – Emech