2013-06-25 3 views
1

32 비트 Visual Basic dll을 개발했습니다. DLL 기록 만 1 방법 GetSum 갖는 두 개의 정수 parameteres Windows 7 64 비트 컴퓨터에서 32 비트 exe를 64 비트 exe로 변환

지금 늦은 결합 부하의 WinForm 32 비트 어플리케이션에 DLL을 사용. 두 개의 정수 값을 전달하면 레이블에 합계가 표시됩니다. 합계가 정확함을 보여줍니다.

private void Form1_Load(object sender, EventArgs e) 
{ 
    object[] args = new object[] { "89", "2" }; 
    Type comObjectType = Type.GetTypeFromProgID("Project1.Class1", true); 
    object comObject = Activator.CreateInstance(comObjectType); 
    Type acctualObjectType = comObject.GetType(); 
    object result = acctualObjectType.InvokeMember("GetSum", System.Reflection.BindingFlags.InvokeMethod, null, comObject, args); 
    label1.Text = result.ToString(); 
} 

제 문제는 Windows 7 64 비트 시스템에서 winfrom exe를 실행할 때입니다. "WindowsFormsApplication.exe * 32"와 같은

내 winfrom exe가 64 비트 시스템에서 32 비트 모드로 실행 중임을 의미합니다. 32 비트 exe를 64 비트 컴퓨터에서 실행하여 64 비트 exe로 실행하려면 어떻게해야합니까?

* 32 작업 관리자 프로세스 섹션에서 exe에 추가하지 마십시오.

+0

플랫폼 대상을 'AnyCPU'로 설정하고 '32 비트 선호'를 해제 했습니까? –

+0

내가 어떤 CPU에 플랫폼을 설정하면 exe는 32 비트 컴퓨터에서 작동하지만 64 비트 시스템에서는 오류 클래스가 등록되지 않고 충돌합니다 .System.Runtime.InteropServices.COMException (0x80040154) : 구성 요소의 COM 클래스 팩터 리 검색 중 다음 오류로 인해 CLSID {0AAB73EC-446B-4142-B758-9637D4CA8E18}이 (가) 실패했습니다. 80040154 클래스가 등록되지 않았습니다 (HRESULT의 예외 : 0x80040154 (REGDB_E_CLASSNOTREG)). –

+0

Matthew 여기서 32 비트 용 탭이 있습니다 –

답변

0

첫 번째 : dll을 만들려면 Visual Basic .NET 또는 기존 Visual Basic 6을 사용하고 있습니까?

VB6을 사용하는 경우 64 비트 DLL을 만들 수 없습니다. VB.NET을 사용한다면 dll을 64 비트로 컴파일하십시오.

VB dll이 32 비트 dll 인 경우 64 비트 응용 프로그램에서 사용할 수 없습니다.

+0

나는 dll 수준에 무엇이든을 할 수 없다 ... 클라이언트는 저에게 항상 32 조금 dll를 준다 –

+0

@Nikhil : 잘, 당신은 선택권이 없다. 32 비트 앱을 만들어야합니다. –

+0

거기에 어떤 방법이 있습니다 ... –

관련 문제