“在64位计算机上构建之后,'System.BadImageFormatException'类型的第一次机会异常

时间:2013-09-04 23:25:31

标签: c# .net c windows visual-c++

我的Visual Studio 2010解决方案有C DLL和C#项目,它调用C DLL。 在32位Windows-7 Pro计算机上构建时,解决方案可以正常工作。 在64位Windows-7 Pro上,构建没问题,但是在运行时,C#调用DLL中的函数并收到错误:

A first chance exception of type 'System.BadImageFormatException'

解决方案配置管理器设置为:

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

以下输出为:

  1. C DLL BUILD OUTPUT

  2. C#BUILD OUTPUT

  3. RUN OUTPUT

  4. C DLL BUILD OUTPUT:

    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 OUTPUT:

    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)RUN OUTPUT:

    '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。我的APP现在调用DLL中的C函数,导致这个错误:

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

1 个答案:

答案 0 :(得分:29)

  

已加载'C:\ Windows \ Microsoft.Net \ assembly \ GAC_64 \ mscorlib ...

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

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