试图加载格式不正确的程序(.dll)

本文关键字:程序 dll 不正确 加载 格式 | 更新日期: 2023-09-27 18:25:00

我的程序编译得很好,但当我运行程序时,我会收到以下错误:

"调用IO_Init()时引发System.BadImageFormatException。消息=试图加载格式不正确的程序。(HRESULT:0x8007000B的异常)"

据我所知,这个错误是因为我的程序试图使用与我的程序(以64位编译)不相同的dll。我也有一个32位版本的dll,当我运行32位版本程序时,它不会抛出任何错误,这很好。

在我的程序开始时,我运行它来检查我们是否处于64位,如果是,请转到包含64位文件的文件夹:

if ((IntPtr.Size > 4) && ((ad.RelativeSearchPath == null) || !ad.RelativeSearchPath.Contains(ad.BaseDirectory + "64''")))
        {
            AppDomainSetup aset = new AppDomainSetup();
            aset.PrivateBinPath = ad.BaseDirectory + "64'';" + ad.BaseDirectory;
            aset.PrivateBinPathProbe = ad.BaseDirectory + "64'';" + ad.BaseDirectory;
            ad = AppDomain.CreateDomain("_NM64SWITCH_", Assembly.GetAssembly(typeof(NaviModel.Program)).Evidence, aset);
            ad.ExecuteAssemblyByName(Assembly.GetAssembly(typeof(NaviModel.Program)).FullName, par);
            return;
        }

我有点不知所措,不知道现在该往哪里看。

试图加载格式不正确的程序(.dll)

从任何CPU切换到x86为我解决了这个问题。