내가 작업하고있는 프로그램은 ThirdPartyLibrary.lib에 정적으로 링크되어 있습니다.리눅스 용 코드에서 다른 버전의 라이브러리 믹싱
3rdPartyLibraryNewVersion.lib과 같은 3rdPartyLibrary의 최신 버전을 활용하고 싶습니다.
따라서 3rdPartyLibraryNewVersion.so를 동적 링크 라이브러리로 포함하여 wrapper.so라는 래퍼 동적 라이브러리를 통해 포함시킵니다. 우리는 3rdPartyLibrary의 새 버전과 구 버전을 동시에 사용할 수 있지만 프로그램의 다른 부분에서 사용하기를 희망합니다.
우리가 가진 해결책은 이전 3rdPartyLibrary를 정적으로 링크하고 동시에 3rdPartyLibraryNewVersion에 래퍼 라이브러리에 동적으로 링크하는 것입니다.
프로그램 --- 정적으로 연결됨 ---> 3rdPartyLibrary.lib. --- 동적 링크 -> 래퍼 .so --- 동적 링크 ---> 3rdPartyLibraryNewVersion.so.
이것이 가능합니까?
우리가 만난 문제는 wrapper.so가 테스트 실행 파일로 작업하는 동안 ThirdPartyLibrary.lib에 정적으로 링크 된 프로그램에서 래퍼가 호출 될 때 3rdPartyLibraryNewVersion.so에서 실패했습니다.
내가 잘못 했습니까?
나는 그것이 실패 방법 당신은 말할 것도 게을리 ... 올바른 방법이 3rdPartyLibrary.lib 우리의 코드를 업데이트하는 것입니다하지만 너무 지루감사합니다,
팀
나는 우리가 미끄러운 길을 가고 있다는 것을 알고 있지만, 대체 길은 쉽지 않습니다. 경우에 따라 gdb에 따라 프로그램의 코어 파일이 3rdPartyLibraryNewVersion.so에 크래시 된 프로그램임을 나타냅니다. ThirdPartyLibraryNewVersion의 내부 호출은 SIGSEGV가 전송되기 전에 만들어졌습니다. 네임 스페이스 충돌을 자세히 설명 할 수 있습니까? 링크 된 래퍼 라이브러리는 3rdPartyLibraryNewVersion을 호출합니다 (또는 내가 생각하기에), 프로그램이 혼란스럽고 정적으로 링크 된 라이브러리라고 불리는 것을 의미합니까? –