“An attempt was made to load a program with an incorrect format” even when the platforms are the same

前端 未结 20 2655
悲&欢浪女
悲&欢浪女 2020-11-22 13:57

I\'m calling functions from a 32-bit unmanaged DLL on a 64-bit system. What I get is:

BadImageFormatException: An attempt was made to load a program w

相关标签:
20条回答
  • 2020-11-22 14:12

    I just had this problem also. Tried all the suggestions here, but they didn't help.

    I found another thing to check that fixed it for me. In Visual Studio, right-click on the project and open "Properties". Click on the "Compile" (or "Build") tab and then click on "Advanced Compile Options" at the bottom.

    Check the dropdown "Target CPU". It should match the "Platform" you are building. That is, if you are building "Any CPU" then "Target CPU" should say "Any CPU". Go through all of your Platforms by making them active and check this setting.

    0 讨论(0)
  • 2020-11-22 14:13

    Building on the answer of @paibamboo

    He said: Go to: Tools > Options > Projects and Solutions > Web Projects > Use the 64 bit version of IIS Express

    My coworker had this box checked (he explicitly looked for it), but had the error message in question. After some hours he unchecked the box and checked it again. Lo and behold: The code now ran with success.

    It seems, that there are two places where the state of this box ist saved which became out of sync. Un- and rechecking it synced it again.

    Question for more knowledgable users: Was there an update or something last week (for VS 2015) which de-synced the states?

    0 讨论(0)
  • 2020-11-22 14:14

    1:Go to: Tools > Options > Projects and Solutions > Web Projects > Use the 64 bit version of IIS Express 2: change below setting for web service project.

    0 讨论(0)
  • 2020-11-22 14:15

    If you try to run 32-bit applications on IIS 7 (and/or 64-bit OS machine), you will get the same error. So, from the IIS 7, right click on the applications' application pool and go to "advanced settings" and change "Enable 32-Bit Applications" to "TRUE".

    Restart your website and it should work.

    enter image description here

    0 讨论(0)
  • 2020-11-22 14:21

    Also see this answer, which solved the same problem for me.

    Posted by Luis Mack on 5/12/2010 at 8:50 AM I've found the same problem, only for a specific project when compiling on a 64-bit machine. A fix that SEEMS to work is to manually alter one character in the image stream EVERY TIME the usercontrol or form is edited in the designer

     AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
    

    Change to

     AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj0yLjAuMC4w
    

    That is 00LjAuMC4w back to 0yLjAuMC4w at the end of the line (00 back to 0y)

    0 讨论(0)
  • 2020-11-22 14:24

    In my case, I am using a tiny .exe that reloads the referenced DLLs via Reflection. So I just do these steps which saves my day:

    From project properties on solution explorer, at build tab, I choose target platfrom x86

    0 讨论(0)
提交回复
热议问题