COM 구성 요소로 배포되거나 .manifest 파일을 사용하여 참조 할 수있는 응용 프로그램에 제 3 자 구성 요소를 사용하고 있습니다. 어느 쪽이든 그것은 CoCreateInstance()를 사용하여로드됩니다. 타사 구성 요소에 필요한 파일은 하위 폴더에 있습니다. 구성 요소 개발자는 실행 파일의 Visual Studio 2010 설정 (Manifest 섹션)에 .manifest 파일을 포함하고 구성 요소를로드해도 문제없이 작동한다고 말했습니다.매니페스트 파일을 dll로 이동 하시겠습니까?
이제 제 3 자 구성 요소에서 사용 된 기능을 캡슐화하기 위해 DLL의 타사 구성 요소 만 사용하고 있습니다. LoadLibrary()를 사용하여 동적으로 DLL을로드하고 있습니다. 여전히 구성 요소를 사용하면 참조 된 매니페스트 파일이있는 EXE에 의해로드 된 DLL 내에서 구성 요소를 사용할 수 있습니다.
세 번째 pary 구성 요소에서 EXE를 더 분리하려면 manifest를 DLL로 옮기고 구성 요소가 사용되는 유일한 위치는 어디입니까? 이런 식으로 모든 새로운 EXE는 DLL을 사용하고 간접적으로 기능을 사용할 수있게 작성하고 싶습니다. 지금은 모든 새 EXE에 mainfest를 추가해야하지만 그렇게하고 싶지는 않습니다.
EXE에서 사용하는 매니페스트를 DLL로 옮기는 방법이 있습니까?
당신은 DLL에 매니페스트를 넣을 수 있지만, 자동으로 활성화되지 않습니다. 활성화 컨텍스트 API를 사용하여 수동으로 수행해야합니다. –
매니페스트에 포함 된 내용을 추측하도록 강요하는 것은 약간 의미가 없습니다. 그러나 당신이 장바구니 뒤에서 말을 넣으려고 할 확률이 높다면 DLL은 EXE가 어디에 있는지 찾아야 만 찾을 수 있습니다. 매니페스트 항목이 EXE에 있어야합니다. DLL에 넣으면 EXE가 DLL을 찾을 수 없으므로 매니페스트를 찾을 수 없습니다. –
EXE는 동적으로 DLL을로드합니다. DLL로드가 작동하지만 DLL 내의 CoCreateInstance() 호출이 실패합니다. – vividos