2013-04-18 2 views
5

대상 x86 설치 프로그램과 함께 32 비트 C# 응용 프로그램이 있습니다. 이 응용 프로그램은 x64 시스템에서 아무런 문제없이 실행할 수 있습니다. 그러나 소프트웨어에 통합 된 공급 업체의 타사 하드웨어는 이제 x64 시스템에 설치할 때마다 64 비트 DLL을 사용해야합니다.32 비트 C# 응용 프로그램에서 64 비트 DLL을 활용하는 방법

현재 32 비트 DLL과 64 비트 DLL을 모두 프로젝트에 배치했습니다. 그러나 대상 x86 설치 프로그램은 분명히 64 비트 DLL을 좋아하지 않습니다.

64 비트 DLL 및/또는 32 비트 DLL을 배포하고 하나의 설치 프로그램 프로젝트 만 가질 수있는 솔루션을 만들 수 있습니까? (필자는 고급 설치 프로그램이라는 타사 소프트웨어를 살펴 보았지만 필요한 해결책을 얻는 데 도움이되는지 확실하지 않습니다)

일반 설치 프로그램 프로젝트를 만들 수 있습니까?

참고 : 다시 정의하지 않으려는 자동 업데이트 프로세스가 있으므로 두 설치 프로그램 (x86 대 x64) 배포는 적합하지 않습니다. 하나의 MSI 파일을 유지 관리하는 것이 중요합니다.

감사합니다. http://www.advancedinstaller.com/user-guide/qa-OS-dependent-install.html

을 또한, 당신이 필요로하는 같은 이름의 DLL의 두 가지 버전이있는 경우 :

+1

NSIS에서이를 수행 할 수 있습니다. – leppie

+3

여기 실제 문제는 x86 응용 프로그램에서 x64 DLL을 사용할 수 없다는 것입니다. –

+6

32 비트 프로세스에서 64 비트 DLL을 사용할 수 없으며 그 반대의 경우도 마찬가지입니다. 이는 부분적으로 주소 공간을 변환 할 방법이 없기 때문입니다. [자세한 내용은 Raymond Chen 블로그의이 게시물을 참조하십시오 (http://blogs.msdn.com/b/oldnewthing/archive/2008/10/20/9006720.aspx). 64 비트와 32 비트를 혼합하려면 두 가지 프로세스와 일종의 프로세스 간 통신이 필요합니다. –

답변

0

MSI 고급 설치에 문제가없는 86에서 파일을 설치, 다음 문서가 작업을 수행하는 방법에 대해 설명 폴더에 넣으려면 다음과 같이 입력해야합니다. http://www.advancedinstaller.com/user-guide/qa-install-file-with-same-name.html

그러나 주석에 언급 된 사람처럼 응용 프로그램이 x64 DLL을 올바르게로드 할 수 있는지 먼저 확인해야합니다.

+0

그는 왜 확인해야합니까? 이 프로세스는 32 비트 전용 프로세스 인 x86을 대상으로합니다. 단일 32 비트 라이브러리를 참조하는 경우 'ANY CPU'로 설정된 경우에도 32 비트 프로세스가됩니다. 이는 또한 64 비트 라이브러리를로드 할 수 없음을 의미합니다. –

+0

나는이 DLL이 자신의 x86 응용 프로그램에서 직접적으로가 아니라 암호화로 언급 된 타사 구성 요소에 의해로드 될 수 있다는 점을 고려했습니다. –

관련 문제