两种原因:

第一种为程序的运行以平台系统位数不匹配,第二种则是该死的VS整出来的...

一般在下面三种情景下会发生.

1.64位系统上C#调用32位的C++ *.dll

2.64位系统上IIS发布含有32位的 *.dll应用程序时

3.64位系统上编写C++ *.dll,在64位系统上通过 C#调用 ,可能成功,也可能失败,失败就报BadImageFormatException 异常,也是最二的一种情况.是由该死的VS整出来的

解决方法如下:

1.VS在64位系统下面,编译调试某个C++的API的时候,报错:未处理BadImageFormatException 试图加载格式不正确的程序。 (异常来自 HRESULT:0x8007000B)

详见下图:

其原因是该API是在32位系统下面开发的,在64位系统上面开发编译的时候需要将生成的目标平台设为X86。

方法是:

在右边的“解决方案资源管理器”里,右键该项目点击属性。在属性窗口里选择“生成”——“目标平台”下拉里选中“X86"即可。见下图:

然后保存重新编译

原因:程序集之间的通讯要么全是64位环境下的,要么全是32位环境下的。不能混编访问。不然会出现“试图加载格式不正确的程序”的错误;

解决办法是把发布网站的程序池开通32位兼容性即可,如下图:

3.如果上面的没有解决,那就是VS中C#工程的问题,打开对应的工程文件(*.csproj),如下图<Prefer32Bit>false</Prefer32Bit>节点

下面是MSDN的解释:

CSharpProjectConfigurationProperties6.Prefer32Bit 属性

获取或设置一个标志,指示是否首选的 32 位平台。

命名空间:  VSLangProj110

程序集:  VSLangProj110(在 VSLangProj110.dll 中)

语法

C#

bool Prefer32Bit { get; set; }

属性值

类型:System.Boolean

返回表示 32 位首选项的标志。 返回true如果 32 位是首选。 否则,返回false。

试图加载格式不正确的程序。 (异常来自 HRESULT:0x8007000B)的更多相关文章

  1. 试图加载格式不正确的程序。 (异常来自HRESULT:0x8007000B)

    异常来自HRESULT:0x8007000B   缘由:在64位操作系统下IIS发布32位的项目,报“项目依赖的dll无法读取,试图加载格式不正确的程序”错误. 原因:程序集之间的通讯要么全是64位环 ...

  2. 引用64位dll时候出现 未能加载文件或程序集“System.Data.SQLite”或它的某一个依赖项。试图加载格式不正确的程序。

    引用64位dll时候出现 未能加载文件或程序集“System.Data.SQLite”或它的某一个依赖项.试图加载格式不正确的程序. 需要在web.config增加配置 <startup use ...

  3. System.BadImageFormatException : 未能加载文件或程序集“Medici.PaymentRecover, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null”或它的某一个依赖项。试图加载格式不正确的程序。

    System.BadImageFormatException : 未能加载文件或程序集“xxxxx.xxxxx, Version=1.0.0.0, Culture=neutral, PublicKey ...

  4. SQLite 解决:Could not load file or assembly 'System.Data.SQLite ... 试图加载格式不正确的程序/or one of its dependencies. 找不到指定的模块。

     Could not load file or assembly 'System.Data.SQLite.dll' or one of its dependencies. 找不到指定的模块. 错误提示 ...

  5. 未能加载文件或程序集“XXXXX”或它的某一个依赖项。试图加载格式不正确的程序。

    未能加载文件或程序集“FastColoredTextBox, Version=2.10.5.0, Culture=neutral, PublicKeyToken=null”或它的某一个依赖项.试图加载 ...

  6. 能加载文件或程序集“System.Data.SQLite”或它的某一个依赖项。试图加载格式不正确的程序。

    现象: 能加载文件或程序集“System.Data.SQLite”或它的某一个依赖项.试图加载格式不正确的程序.

  7. 未能加载文件或程序集“XXX”或它的某一个依赖项。试图加载格式不正确的程序。

    64位系统 IIS7.0配置.net网站时报错:未能加载文件或程序集"XXX"或它的某一个依赖项.试图加载格式不正确的程序. 背景: 在64位的操作系统中, IIS7.0配置.ne ...

  8. 未能加载文件或程序集“XXXXXX”或它的某一个依赖项。试图加载格式不正确的程序。

    在本机WIN7机器上的WebService部署到Win2008R2上发现错误 “/”应用程序中的服务器错误. 未能加载文件或程序集“XXXXXX”或它的某一个依赖项.试图加载格式不正确的程序. 说明: ...

  9. 未能加载文件或程序集“Oracle.DataAccess”或它的某一个依赖项.试图加载格式不正确的程序

    .NET:Microsoft Visual Studio 2010 + .NET Framework 3.5 操作系统:windows2008 R2 64 位操作系统 oracle数据库:32位的OD ...

随机推荐

  1. 解决phalcon读取mysql乱码

    原先的项目用的是phalcon,迁移到新服务器上面后中文字符变为'?',即便连接参数设置了charset => 'utf8'也无效,一开始怀疑是版本问题,后来直接拷过去完全一样的库也没用:最后还 ...

  2. Delphi里如何让程序锁定在桌面上,win+d都无法最小化

    procedure TForm29.FormCreate(Sender: TObject); begin Windows.SetParent(Self.Handle, FindWindowEx(Fin ...

  3. reference

    z@z:~$ g++ -std=c++11 ref.cpp ref.cpp:7:10: error: invalid conversion from 'int' to 'int*' [-fpermis ...

  4. C语言正则表达式详解 regcomp() regexec() regfree()详解

    标准的C和C++都不支持正则表达式,但有一些函数库可以辅助C/C++程序员完成这一功能,其中最著名的当数Philip Hazel的Perl-Compatible Regular Expression库 ...

  5. spark 特殊函数

    private var seed: Long = System.nanoTime()//返回最准确的可用系统计时器的当前值,以毫微秒为单位 require(storageLevel != Storag ...

  6. [知识整理]Java集合(一) - List

    一.实现List的几个类: ArrayList.LinkedList.CopyOnWriteArrayList.Vector 二.几个List底层的数据结构: ArrayList - 数组列表 Lin ...

  7. Libevent 的多线程操作

    起因是event_base 跨线程add/remove event 导致崩溃或者死循环. 据查:libvent 1.4.x是非线程安全的,要跨线程执行event_add,会有问题.因此传统做法是通过p ...

  8. [转载] 深入理解Android之Java虚拟机Dalvik

    本文转载自: http://blog.csdn.net/innost/article/details/50377905 一.背景 这个选题很大,但并不是一开始就有这么高大上的追求.最初之时,只是源于对 ...

  9. 从红米手机经常发生UIM没有服务的一些猜想

    缘起:买了测试用的红米手机,安装电信卡,经常生UIM没有服务,大约两天1次. 我的解决办法:飞行模式切换一下就恢复正常. 之前这张卡用三星的信号是满格,红米断开挺经常的 上网搜索: 同样的现象,还好官 ...

  10. oracle 表被锁定 杀死进程

    /*查出被锁biao*/ select b.owner,b.object_name,a.session_id,a.locked_mode from v$locked_object a,dba_obje ...