在64位计算机上执行buildint之后,第一次出现“System.BadImageFormatException”types的exception

我的Visual Studio 2010解决scheme有C DLL和C#项目,它调用C DLL。 在32位Windows-7 Pro计算机上构build解决scheme时工作正常。 在64位Windows-7 Pro上,构build好,但运行时,C#调用DLL中的函数,并得到错误:

A first chance exception of type 'System.BadImageFormatException' 

解决schemeConfiguration Manager设置是:

 <DLL project> Platform = Win32 (<<< no option to change to "Any CPU") <C# project> Platform = "Any CPU" 

以下输出是:

  1. C DLLbuild立输出

  2. C#构build输出

  3. 运行输出

C DLL构build输出:

 1>------ Rebuild All started: Project: Ultrasound_Frame_Grabber, Configuration: Debug Win32 ------ 1> Processing ..\..\..\include\USGFWSDK\include\Usgfw2.idl 1> Usgfw2.idl 1> Processing C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\oaidl.idl 1> oaidl.idl 1> Processing C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\objidl.idl 1> objidl.idl 1> Processing C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\unknwn.idl 1> unknwn.idl 1> Processing C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\wtypes.idl 1> wtypes.idl 1> Processing C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\basetsd.h 1> basetsd.h 1> Processing C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\guiddef.h 1> guiddef.h 1> Processing C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\ocidl.idl 1> ocidl.idl 1> Processing C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\oleidl.idl 1> oleidl.idl 1> Processing C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\servprov.idl 1> servprov.idl 1> Processing C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\urlmon.idl 1> urlmon.idl 1> Processing C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\msxml.idl 1> msxml.idl 1> Processing C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\strmif.idl 1> strmif.idl 1> Processing C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\control.odl 1> control.odl 1> Processing C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\oaidl.acf 1> oaidl.acf 1> Processing C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\ocidl.acf 1> ocidl.acf 1> stdafx.cpp 1> DIBSectn.cpp 1> sample.cpp 1> sampleDlg.cpp 1> Ultrasound_Frame_Grabber.cpp 1> Generating Code... 1> Usgfw2_i.c 1> .NETFramework,Version=v4.0.AssemblyAttributes.cpp 1> Creating library C:\Primary\PROJECTS\VasoNova\WORK\Win7 VPS\Debug\Ultrasound_Frame_Grabber.lib and object C:\Primary\PROJECTS\VasoNova\WORK\Win7 VPS\Debug\Ultrasound_Frame_Grabber.exp 1>strmbasd.lib(mtype.obj) : warning LNK4075: ignoring '/EDITANDCONTINUE' due to '/INCREMENTAL:NO' specification 1> sample.vcxproj -> C:\Primary\PROJECTS\VasoNova\WORK\Win7 VPS\Debug\Ultrasound_Frame_Grabber.dll ========== Rebuild All: 1 succeeded, 0 failed, 0 skipped ========== 

2)C#构build输出:

 1>------ Skipped Rebuild All: Project: VNMath, Configuration: Debug Win32 ------ 1>Project not selected to build for this solution configuration 2>------ Skipped Rebuild All: Project: GuiManager, Configuration: Debug Any CPU ------ 2>Project not selected to build for this solution configuration 3>------ Rebuild All started: Project: Ultrasound_Frame_Grabber, Configuration: Debug Win32 ------ 4>------ Skipped Rebuild All: Project: VNCommon, Configuration: Debug Any CPU ------ 4>Project not selected to build for this solution configuration 5>------ Skipped Rebuild All: Project: AudioUtility, Configuration: Debug Any CPU ------ 5>Project not selected to build for this solution configuration 6>------ Skipped Rebuild All: Project: VNDevices, Configuration: Debug Any CPU ------ 6>Project not selected to build for this solution configuration 7>------ Skipped Rebuild All: Project: SimpleRPC, Configuration: Debug Any CPU ------ 7>Project not selected to build for this solution configuration 8>------ Skipped Rebuild All: Project: VNSockCommunication, Configuration: Debug Any CPU ------ 8>Project not selected to build for this solution configuration 9>------ Skipped Rebuild All: Project: PdfSharp, Configuration: Debug Any CPU ------ 9>Project not selected to build for this solution configuration 10>------ Skipped Rebuild All: Project: VNUserControls, Configuration: Debug Any CPU ------ 10>Project not selected to build for this solution configuration 11>------ Skipped Rebuild All: Project: GuiServer, Configuration: Debug Any CPU ------ 11>Project not selected to build for this solution configuration 3> Processing ..\..\..\include\USGFWSDK\include\Usgfw2.idl 3> Usgfw2.idl 3> Processing C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\oaidl.idl 3> oaidl.idl 3> Processing C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\objidl.idl 3> objidl.idl 3> Processing C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\unknwn.idl 3> unknwn.idl 3> Processing C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\wtypes.idl 3> wtypes.idl 3> Processing C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\basetsd.h 3> basetsd.h 3> Processing C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\guiddef.h 3> guiddef.h 3> Processing C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\ocidl.idl 3> ocidl.idl 3> Processing C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\oleidl.idl 3> oleidl.idl 3> Processing C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\servprov.idl 3> servprov.idl 3> Processing C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\urlmon.idl 3> urlmon.idl 3> Processing C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\msxml.idl 3> msxml.idl 3> Processing C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\strmif.idl 3> strmif.idl 3> Processing C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\control.odl 3> control.odl 3> Processing C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\oaidl.acf 3> oaidl.acf 3> Processing C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\ocidl.acf 3> ocidl.acf 3> stdafx.cpp 3> DIBSectn.cpp 3> sample.cpp 3> sampleDlg.cpp 3> Ultrasound_Frame_Grabber.cpp 3> Generating Code... 3> Usgfw2_i.c 3> .NETFramework,Version=v4.0.AssemblyAttributes.cpp 3> Creating library C:\Primary\PROJECTS\my_project\WORK\Win7 VPS\Debug\Ultrasound_Frame_Grabber.lib and object C:\Primary\PROJECTS\my_project\WORK\Win7 VPS\Debug\Ultrasound_Frame_Grabber.exp 3>strmbasd.lib(mtype.obj) : warning LNK4075: ignoring '/EDITANDCONTINUE' due to '/INCREMENTAL:NO' specification 3> sample.vcxproj -> C:\Primary\PROJECTS\my_project\WORK\Win7 VPS\Debug\Ultrasound_Frame_Grabber.dll 12>------ Rebuild All started: Project: MY_APP, Configuration: Debug Any CPU ------ C:\Primary\PROJECTS\my_project\WORK\Win7 VPS\MY_APP\FrmMY_APP.cs(291,4): warning CS0162: Unreachable code detected C:\Primary\PROJECTS\my_project\WORK\Win7 VPS\MY_APP\FrmMY_APP.cs(441,4): warning CS0164: This label has not been referenced C:\Primary\PROJECTS\my_project\WORK\Win7 VPS\MY_APP\FrmMY_APP.cs(1276,13): warning CS0219: The variable 'exportFrmIsUp' is assigned but its value is never used C:\Primary\PROJECTS\my_project\WORK\Win7 VPS\MY_APP\FrmMY_APP.cs(91,66): warning CS0067: The event 'VN.Forms.MY_APPForm.m_eventTabletConnectionStatusChanged' is never used Compile complete -- 0 errors, 4 warnings 12> MY_APP -> C:\Primary\PROJECTS\my_project\WORK\Win7 VPS\MY_APP\bin\Debug\MY_APP.exe 12> C:\Primary\PROJECTS\my_project\WORK\Win7 VPS\\CommsLibrary\Common.Logging.dll 12> C:\Primary\PROJECTS\my_project\WORK\Win7 VPS\\CommsLibrary\Common.Logging.Log4Net.dll 12> C:\Primary\PROJECTS\my_project\WORK\Win7 VPS\\CommsLibrary\DistributedFileSystem.dll 12> C:\Primary\PROJECTS\my_project\WORK\Win7 VPS\\CommsLibrary\ICSharpCode.SharpZipLib.dll 12> C:\Primary\PROJECTS\my_project\WORK\Win7 VPS\\CommsLibrary\libMobiledevice.dll 12> C:\Primary\PROJECTS\my_project\WORK\Win7 VPS\\CommsLibrary\log4net.config 12> C:\Primary\PROJECTS\my_project\WORK\Win7 VPS\\CommsLibrary\log4net.dll 12> C:\Primary\PROJECTS\my_project\WORK\Win7 VPS\\CommsLibrary\NetworkCommsDotNet.dll 12> C:\Primary\PROJECTS\my_project\WORK\Win7 VPS\\CommsLibrary\protobuf-net.dll 12> C:\Primary\PROJECTS\my_project\WORK\Win7 VPS\\CommsLibrary\QuickLZCompressor.dll 12> C:\Primary\PROJECTS\my_project\WORK\Win7 VPS\\CommsLibrary\SerializerBase.dll 12> C:\Primary\PROJECTS\my_project\WORK\Win7 VPS\\CommsLibrary\SevenZipLZMACompressor.dll 12> C:\Primary\PROJECTS\my_project\WORK\Win7 VPS\\CommsLibrary\SharpZipLibCompressor.dll 12> 13 file(s) copied. ========== Rebuild All: 2 succeeded, 0 failed, 10 skipped ========== 

3)运行输出:

 'MY_APP.vshost.exe' (Managed (v4.0.30319)): Loaded 'C:\Windows\Microsoft.Net\assembly\GAC_64\mscorlib\v4.0_4.0.0.0__b77a5c561934e089\mscorlib.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled. 'MY_APP.vshost.exe' (Managed (v4.0.30319)): Loaded 'C:\Windows\assembly\GAC_MSIL\Microsoft.VisualStudio.HostingProcess.Utilities\10.0.0.0__b03f5f7f11d50a3a\Microsoft.VisualStudio.HostingProcess.Utilities.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled. 'MY_APP.vshost.exe' (Managed (v4.0.30319)): Loaded 'C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Windows.Forms\v4.0_4.0.0.0__b77a5c561934e089\System.Windows.Forms.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled. 'MY_APP.vshost.exe' (Managed (v4.0.30319)): Loaded 'C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Drawing\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.Drawing.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled. 'MY_APP.vshost.exe' (Managed (v4.0.30319)): Loaded 'C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System\v4.0_4.0.0.0__b77a5c561934e089\System.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled. 'MY_APP.vshost.exe' (Managed (v4.0.30319)): Loaded 'C:\Windows\assembly\GAC_MSIL\Microsoft.VisualStudio.HostingProcess.Utilities.Sync\10.0.0.0__b03f5f7f11d50a3a\Microsoft.VisualStudio.HostingProcess.Utilities.Sync.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled. 'MY_APP.vshost.exe' (Managed (v4.0.30319)): Loaded 'C:\Windows\assembly\GAC_MSIL\Microsoft.VisualStudio.Debugger.Runtime\10.0.0.0__b03f5f7f11d50a3a\Microsoft.VisualStudio.Debugger.Runtime.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled. 'MY_APP.vshost.exe' (Managed (v4.0.30319)): Loaded 'C:\Primary\PROJECTS\VasoNova\WORK\Win7 VPS\MY_APPG4\bin\Debug\MY_APP.vshost.exe', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled. 'MY_APP.vshost.exe' (Managed (v4.0.30319)): Loaded 'C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Configuration\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.Configuration.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled. 'MY_APP.vshost.exe' (Managed (v4.0.30319)): Loaded 'C:\Windows\Microsoft.Net\assembly\GAC_64\System.Data\v4.0_4.0.0.0__b77a5c561934e089\System.Data.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled. 'MY_APP.vshost.exe' (Managed (v4.0.30319)): Loaded 'C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Core\v4.0_4.0.0.0__b77a5c561934e089\System.Core.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled. 'MY_APP.vshost.exe' (Managed (v4.0.30319)): Loaded 'C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Deployment\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.Deployment.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled. 'MY_APP.vshost.exe' (Managed (v4.0.30319)): Loaded 'C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.ServiceModel\v4.0_4.0.0.0__b77a5c561934e089\System.ServiceModel.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled. 'MY_APP.vshost.exe' (Managed (v4.0.30319)): Loaded 'C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.ServiceProcess\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.ServiceProcess.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled. 'MY_APP.vshost.exe' (Managed (v4.0.30319)): Loaded 'C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Web.Extensions\v4.0_4.0.0.0__31bf3856ad364e35\System.Web.Extensions.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled. 'MY_APP.vshost.exe' (Managed (v4.0.30319)): Loaded 'C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Xml\v4.0_4.0.0.0__b77a5c561934e089\System.Xml.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled. The thread 'vshost.NotifyLoad' (0x197c) has exited with code 0 (0x0). The thread '<No Name>' (0x838) has exited with code 0 (0x0). The thread 'vshost.LoadReference' (0x1744) has exited with code 0 (0x0). 'MY_APP.vshost.exe' (Managed (v4.0.30319)): Loaded 'C:\Primary\PROJECTS\VasoNova\WORK\Win7 VPS\MY_APPG4\bin\Debug\MY_APP.exe', Symbols loaded. 'MY_APP.vshost.exe' (Managed (v4.0.30319)): Loaded 'C:\Primary\PROJECTS\VasoNova\WORK\Win7 VPS\MY_APPG4\bin\Debug\VN.Common.dll', Symbols loaded. 'MY_APP.vshost.exe' (Managed (v4.0.30319)): Loaded 'C:\Primary\PROJECTS\VasoNova\WORK\Win7 VPS\MY_APPG4\bin\Debug\GuiServer.dll', Symbols loaded. 'MY_APP.vshost.exe' (Managed (v4.0.30319)): Loaded 'C:\Primary\PROJECTS\VasoNova\WORK\Win7 VPS\MY_APPG4\bin\Debug\GuiManager.dll', Symbols loaded. 'MY_APP.vshost.exe' (Managed (v4.0.30319)): Loaded 'C:\Primary\PROJECTS\VasoNova\WORK\Win7 VPS\MY_APPG4\bin\Debug\VNUserControls.dll', Symbols loaded. 'MY_APP.vshost.exe' (Managed (v4.0.30319)): Loaded 'C:\Primary\PROJECTS\VasoNova\WORK\Win7 VPS\MY_APPG4\bin\Debug\VNSockCommunication.dll', Symbols loaded. 

COMMS STEP 0:MY_APPForm_Load。 我的应用程序现在调用DLL中的交streamfunction,造成这个错误:

 A first chance exception of type 'System.BadImageFormatException' occurred in MY_APP.exe 

加载'C:\ Windows \ Microsoft.Net \程序集\ GAC_64 \ mscorlib …

您的程序以64位进程运行。 您的DLL包含32位非托管代码。 KABOOM。

您需要强制EXE以32位进程运行,以便可以加载DLL。 在“解决方案资源管理器”窗口中右键单击您的EXE项目。 属性,生成选项卡,将平台目标设置从AnyCPU更改为x86。 在VS2012上勾选“首选32位”选项。 重复发布配置。