나는 implicitly dll Z. dll A에 대한 링크도 explicitly dll B에 링크되어 있는데, implicitly은 dll Z '(다른 버전의 Z dll)에 링크되어있다.암묵적으로 DLL과 그 의존성을 충돌없이 어떻게 연결합니까?
일부 추가 요소는 다음과 같습니다.dll B는 시스템의 어느 위치 에나 배치 할 수 있으며 런타임시 XML 파일을 통해 런타임에 DLL의 위치가 표시되며 loadlibrary를 사용하여로드됩니다.
Google의 통제 범위를 벗어나는 제한 사항으로 인해 환경 경로를 변경할 수 없습니다.
내가 갖고있는 문제는 dlls A와 B가 올바른 버전의 Z dll을 사용한다는 것입니다.
어떤 옵션이 있습니까?
당신은 멍청이에요. 동일한 라이브러리의 두 가지 다른 버전을 "암시 적으로"로드 할 수는 없습니다 (나는 "dlopen'을 사용하지 않고 이것을"전체 호출 "이라고 부릅니다). 라이브러리가 PIC가 아니면 동일한 가상 주소 공간에 두 개의 다른 심볼 집합이 필요하며 명확하게 불가능합니다. – Borealid
기본적으로 유일한 옵션은 out of process COM 서버 같은 두 프로세스 중 하나를 별도 프로세스로 구체화하는 것입니다. –
고마워요, 당신이 대답을 올리면 받아 들일 것입니다. – dangerousdave