32 ビットの Visual Basic dll を開発しました。2 つの整数パラメータを持つ1 つのメソッドGetSumのみを記述した dll
レイトバインディングを使用して、Winform 32 ビット アプリケーションで dll をロードします。2 つの整数値を渡すと、合計がラベルに表示されます。合計は正しいことを示しています。
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 に追加しないでください。