MyAssembly.dll을 내 쿼리에 대한 추가 참조로 추가했는데 제대로 작동합니다. 문제없이 다양한 클래스를 사용할 수 있습니다.LINQPad : [DllImport]를 사용하여 C++ dll에 액세스하는 어셈블리 사용 시도
MyAssembly.dll의 클래스 중 하나에 대한 메서드 중 하나는 다른 dll (Wrapper.dll)을 참조합니다. [("c.dll을"CallingConvention = CallingConvention.StdCall, EntryPoint를 = "CPlusPlusFunction ') 같이 DllImport]
내부 : Wrapper.dll는 C++ DLL (c.dll을)의 기능에 액세스하기 위해 [같이 DllImport] 사용 정적 extern UInt32 _CPlusPlusFunction ([MarshalAs (UnmanagedType.LPWStr)] 문자열 file_path);
이 방법은 (c.dll을을 참조 Wrapper.dll을 참조)하여 MyAssembly.dll을 참조하는 MyApp.exe의에서 실행될 때 완벽하게 잘 작동하지만, LINQPad에 나는 그것이 동작하지 않습니다. 난 단지 MyAssembly.dll을에 대한 참조를 추가하는 방법을 실행하려고하면
, 내가 얻을 :
DllNotFoundException : 지정된 모듈을 찾을 수 없습니다 : DLL 'c.dll을'을로드 할 수 없습니다입니다. (HRESULT 예외 : 0x8007007E)
단지 Wrapper.dll에 대한 추가 참조를 추가하면 동일한 오류가 발생합니다. 내가 Wrapper.dll 및 c.dll을 모두에게 추가 참조를 추가하는 경우
, 내가 얻을 :
메타 데이터 파일 'c.dll을'열 수 없습니다 - 시도가를로드하려고했습니다 ' 잘못된 형식의 프로그램. '
C.dll에 대한 추가 참조를 추가하면 동일한 오류가 발생합니다.
MyApp.exe 에서처럼 LINQPad에서이 작업을 수행 할 수있는 방법에 대한 아이디어가 있습니까?
감사합니다. Hans, 그 트릭을했습니다. .dll을 .linq 스크립트와 같은 디렉토리에 둘 수 있습니다. – James
Windows는 현재 작업 디렉토리 (Environment.CurrentDirectory)에있는 경우 DLL을 찾을 수도 있습니다. LINQPad가 디렉터리를 스크립트로 변경할 때 작동하지 않을 수 있습니다. 그것은 약간 히트가되고 그리워하는 경향이 있습니다. –