2014-11-20 2 views
1

MS Visual Studio (여러 버전)의 링커 입력 옵션에서 필드는 Delay Loaded DLLs입니다. 이것이 정확히 어떻게 작동합니까?지연로드 된 DLL - 무엇이 누락 되었습니까?

이 필드에 "mydll.dll"을 지정하면 no imports found from mydll.dll 경고가 계속 나타납니다.하지만 실행 파일을 실행하면 mydll.dll을 찾을 수 없다는 불만이 생깁니다 (뭔가 가져 오기가 필요함을 시사 함). 그것) 나는 프로그램을 끝내야 만한다.

가장 좋은 추측으로는 "mydll.lib"을 Additional Dependencies 아래에 지정하고 Delay Loaded DLLs 파일에서 "mydll.dll"또는 "mydll.lib"를 지정해야합니다. 지금까지 시도한 어떤 조합도 작동하지 않으며, 정확히 어떻게 사용해야하는지에 대한 충분한 설명이 밝혀지지 않았습니다. 도움!

2 차 질문 (의견 없음) : 라이브 카메라 소스 또는 디스크의 미리 녹화 된 비디오 재생에서 실행할 수있는 사용자 정의 이미지 처리 응용 프로그램의 컨텍스트에서 수행됩니다. 카메라 DLL이 없으면 실행할 수 있지만 입력 소스를 미리 녹화 된 비디오로만 제한 할 수 있습니다. 지연 DLL을 사용하여 이것을 달성하는 합리적인 방법은 무엇입니까?

답변

1

지연로드 된 각 라이브러리에 대해 Additional Dependencies에 포함하여 라이브러리를 다른 필수 라이브러리와 함께 정상적으로 연결하십시오. 또한 라이브러리 DelayImp.lib을 포함하십시오. "thislib.lib thatlib.lib otherlib.lib DelayImp.lib"

Delay Loaded DLLs 아래에있는 각 지연로드 라이브러리를 DLL 이름을 사용하여 지정하고 여러 항목을 세미콜론 (예 : "thislib.dll; thatlib.dll"

컴파일 (필요한 경우), 링크 (필요한), 즐기십시오. 추가 #pragma 코드가 모두 microsoft documentationthis CodeProject explanation으로 제안 된 혼동이 필요하지 않습니다.

DLL이 유효 한 상황에 대처할 수있는 합리적인 방법인지 여부에 대해 사람들은 자신의 견해를 갖습니다. 그러나 실제로는 LoadLibraryGetProcAddress을 수동으로 사용하거나 DLL이 일반적으로 발견되는 것보다 검색 경로를 내려가는 폴더에 배포되는 더미 DLL을 만드는 것보다 훨씬 간단합니다. 또한 this approach which is applicable in C#의 경우 훨씬 간단합니다. 그것들은 제가 알고있는 유일한 대안들입니다.

관련 문제