2010-06-04 5 views
2

파이썬 .pyd는 혼합 모드 C++ DLL입니다. DLL을로드 미세하고 문제없이 부하 관리되지 않는 C++ DLL을하지만, 그것은이 오류 메시지와 함께 실패 관리되는 C++ DLL에 의해 참조되는 .NET DLL을로드 할 때 :파이썬에서 혼합 모드 .dlls가 참조하는 .NET .dll을로드하는 방법은 무엇입니까?

Unhandled Exception: System.IO.FileNotFoundException: Could not load file or assembly '...' 

받는 사람이 .NET DLL을 복사를 디렉토리에 pythod_d.exe가 포함되어 있으면 .NET 라이브러리를 성공적으로로드 할 수 있지만 이는 장기적인 해결책이 아닙니다. 거기에 내 문제를 해결할 것입니다 python_d.exe 설정할 또는 일부 명령 줄 옵션을 환경 변수가 있습니까?

IronPython 또는 Python .NET을 사용하는 것은 허용되지 않습니다.

답변

1

문제가 해결 된 것 같습니다. 어셈블리 로딩은 SetDllDirectory()에 의해 설정된 경로를 사용하지 않으며 파이썬이이 함수를 호출하는 것처럼 보입니다. AppDomain.AssemblyResolve() 이벤트에 대한 대리인을 등록하면 실패한 dll의 이름을 catch하고 GetDllDirectory()에서 가져온 디렉터리에 추가 한 다음 수동으로 어셈블리를 직접로드 할 수 있습니다.

관련 문제