2013-06-25 1 views
1

Разработал 32-разрядную версию Visual Basic. DLL написана только один метод GetSum, имеющий два целых parameteresПреобразование 32-разрядного exe в 64-разрядный exe на Windows 7 64-разрядная машина

Теперь с помощью позднего связывания Загрузите DLL в Winform 32 битное приложение. передать два целочисленных значения, обозначить сумму в метке. сумма отображается правильно.

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(); 
} 

Моя проблема в том, что я запускаю winfrom exe на Windows 7 64-разрядную машину. в разделе процессов диспетчера задач отображается как «WindowsFormsApplication.exe * 32»

Означает, что мой winfrom exe работает как 32-битный режим на 64-битной машине. Что мне делать, чтобы запустить мой 32-разрядный exe на 64-битной машине, чтобы работать как 64-разрядный exe.

Dont want * 32 append to exe в разделе процессов диспетчера задач.

+0

Установили ли вы цель платформы «AnyCPU» и выключили «Предпочитаете 32-бит»? –

+0

, когда я устанавливаю платформу для любого процессора, а затем exe corrcltly работает на 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-разрядная, вы не сможете использовать ее из 64-битного приложения.

+0

Я не могу ничего сделать на уровне dll ... клиент дает мне 32-битную dll всегда –

+0

@Nikhil: ну, у вас нет выбора. Вы должны создать 32-битные приложения. –

+0

есть ли какой-либо способ ... –

 Смежные вопросы

  • Нет связанных вопросов^_^