2014-04-24 2 views
1

최근에 나는 CabExtract (C로 작성)의 cab 파일을 64 bit C# application에 추출하고 있습니다. 이 32 비트 응용 프로그램을 실행할 때하지만 64 비트 응용 프로그램에서 사용할 때 동일한 라이브러리 라이브러리가 잘 작동, 그것은 예외 다음 발생 :64 비트 C# 응용 프로그램에서 32 비트 CabExtract 라이브러리를 사용하여 cab 파일 추출

cabExtract.dll에서 가져 오기는 다음과 같은 방법으로 구현되었습니다

:

[DllImport("cabExtract.dll", EntryPoint="ExtractCabBegin", CharSet=CharSet.Unicode, ExactSpelling=true)] 
internal static extern int ExtractCabBegin(); 

예외 : System.BadImageFormatException

메시지 : 잘못된 형식의 프로그램을로드하려고 시도했습니다. ( HRESULT에서 예외 : 0x8007000B)

는 내가 64 비트에 대한 어떤 CabExtract 라이브러리를 발견하지 않았습니다 지금 협박 CabExtract 라이브러리 (32)에 대해 지원하는 의심. 그래서 내 질문 :

64 비트 관리 응용 프로그램에서 32 비트 비 관리 라이브러리를 사용할 수 있습니까? 그렇다면 어떻게 할 수 있습니까?

+0

이 경우 64 비트 패키지를 사용하지 않아야합니까? http://www.cygwin.com/packages/x86_64/cabextract/ – rene

+0

감사합니다 ... 나는 그 일을 끝냈습니다.하지만 어떻게 그 출처를 얻을 수 있습니까? 소스를 다운로드 할 수있는 다운로드 옵션이 없습니다. –

+0

흠, 그리고 메인 페이지에서 소스를 가져 와서 직접 컴파일한다면? – rene

답변

1

64 비트 관리 응용 프로그램에서 32 비트 비 관리 라이브러리를 사용할 수 있습니까? 그렇다면 어떻게 할 수 있습니까?

아니요. 64 비트 프로세스는 64 비트 모듈 만로드 할 수 있습니다. 32 비트 프로세스는 32 비트 모듈 만로드 할 수 있습니다.

귀하가 링크하는 라이브러리는 출처로 제공되며 LGPL 라이센스가 적용됩니다. 해당 라이센스를 준수하는 한 코드를 64 비트 DLL로 컴파일하고 64 비트 프로세스에서 사용할 수 있습니다.