내 코드가 정적/암시 적으로 링크 된 DLL (DLLB라고 부름)이지만 런타임에 찾을 수없는 라이브러리를 사용하고 있습니다.내가 연결할 DLL을 찾는 데 도움이되는 최적의 방법은 무엇입니까?
DLLB를 호출하는 코드와 동일한 디렉터리에 DLLB를 배치 했음에도 불구하고. (호출 코드 자체는 DLL, arcpy에서 호출 된 python에서 호출되는 DLLA입니다. 왜 Python이 DLLA를 찾았지만 DLLA가 DLLB를 찾지 못했지만 동일한 디렉토리에 있음에도 불구하고) .
시스템 경로의 어딘가에 라이브러리 DLL을 넣으면 모든 것이 잘 작동합니다.
하지만 배포에 가장 적합한 방법은 무엇입니까? 설치시 클라이언트 시스템의 시스템 경로에 항목을 추가 하시겠습니까? DLL을로드하기 전에 런타임시 Python에서 시스템 경로를 수정 하시겠습니까? 다른 것?
맞아, 파이썬에서 DLLA의 전체 경로를 지정합니다. DLLB 아라비아 동적로드를 지원하지 않는 제 3 자 라이브러리입니다. 어떤 것이 가장 좋은지에 대한 의문을 남기고 - 시스템 경로를 수정합니까? 어떻게 든 파이썬을 위해 이것을 할 수 있고 그것은 DLL을로드합니까? –
항상 동적으로 DLL을로드 할 수 있습니다. (거의 항상 그렇습니다.) 가장 가능성있는 문제는 암시적인로드가 아닌 명시 적으로 사용하도록 DLLA의 코드를 변경하는 것이 너무 어려울 수 있다는 것입니다. 최선의 해결책은 DLLA를로드하기 전에 Python *에서 DLLB를 명시 적으로로드하는 것입니다. 암시 적로드는 이미 메모리에 있으므로 올바른 DLL을 찾습니다. 그러나 대신'os.environ' 매핑 객체를 사용하여 프로세스의 PATH 환경 변수를 수정할 수 있습니다. 디렉토리를 PATH에 앞에두고 싶지만 갈등이없는 디렉토리가 있는지 확인하십시오. –
아하! http://msdn.microsoft.com/en-us/library/784bt7z7%28v=vs.100%29.aspx –