问题标签 [badimageformatexception]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1534 浏览

c# - 无法从 Windows Mono C# 项目访问 Linux gcc 编译的 .so 共享库

这是设置:

我有一个共享库(带有外部“C”方法的 c++)我在 linux 中编译并创建了一个 library.so 文件。

我在同一个盒子(Ubuntu)上使用了 Mono Develop,并且能够 DLLImport("library.so") 并访问我的外部函数没问题。

当我将该 .so 文件复制到 Windows 机器(Win7)并尝试做同样的事情时,问题就出现了,但这次使用 MonoDevelop 在 Windows 下运行 Mono。

我得到一个 System.BadImageFormatException。我试过在 library.so 文件之前做一个“./”,但没有任何帮助。我已经检查并仔细检查了它正在查看正确的目录,并且确实如此。

为什么我无法在 Windows/Mono 下访问这个 .so 文件,我是否遗漏了一些重要的东西?

0 投票
3 回答
460 浏览

c# - 使 C# 程序能够在任何操作系统上编译

我已经开始在 c# 2008 的 XP 32 位 Windows 操作系统上制作 C# 程序,现在我正试图在 Windows 7 64 位操作系统中打开它。出现的问题是我无法在我的 64 位系统上运行 c# 2010 中的程序,并且它不会通过 Initialize Component(); 我的代码中的行。它出现了“BadImageFormatException 未处理”的错误,我认为这是因为系统更改了我打开它的位置。对此我们有任何帮助。

谢谢

0 投票
5 回答
3740 浏览

.net - 是否可以从为以 64 位代码运行的“任何 CPU”编译的 .NET 应用程序调用 64 位本机 C++ DLL 文件?

我正在.NET 3.5 中编写一个程序,在某些地方必须走出去并从硬件 API 执行代码。这一切都很好,并且可以在 32 位 Windows 7、Windows XP 等中工作。问题出现在 64 位 Windows 7 上。

我在“任何 CPU”中编译,它确实在 Windows 7 64 位上以 64 位运行。因此,要与这件硬件接口,我必须用非托管 C++ 编写自己的包装 DLL。

所以,在我全部在 32 位下工作后,我将开关切换到 64 位,这就是问题所在。我遇到的问题与 Stack Overflow 问题“试图加载格式不正确的程序”几乎完全相反,即使平台相同......在那个问题中,他正试图获取他的代码在 Windows 7 上以 32 位运行(强制运行)。

好的,现在,我不想这样做,因为这块硬件有一个 64 位 API。所以,我用 64 位编译了我的代码,然后经过大量试验和错误,我得到了64 位正确的LINK,我有一个纯 64 位本机 C++ DLL,并Depends.exe确认了这一点。现在,Depends.exe也将供应商的 DLL 文件显示为纯 64 位。这很好,因为第一次代码不起作用,我开始与制造商一起研究,他们在我的帮助下更新了很多代码,或者我应该用我的问题说...... :)

因此,长话短说,我已将其分解为尽可能简单的设置。我的 DLL 文件 HW API.dll(也是本机 C++)和一个 .NET 应用程序来调用它们,使用相同的P/Invoke语法,并作为 64 位版本调用......

我的电话,仅供参考,如下所示:

现在,当我尝试从 .NET 调用此代码时,出现异常错误:

这让我相信 32 位的某些东西在某种程度上会产生干扰……我怎么可能说出来呢?我的意思是,是的,我已经查看了资源浏览器,并确保 DLL 文件是从正确的位置加载的,并且再次以 64 位编译它们,并且 .NET 应用程序以 64 位运行,即使它是为“任何 CPU”编译的。我已经验证了这一切...

我对这里的某些事情完全愚蠢吗?我是否错过了它告诉我们 P/Invoke 不适用于 64 位或其他东西的段落?如果我这样做了,为什么会抛出错误的图像格式异常?

我正在做的事情是否可能?64 位 .NET 应用程序可以加载和调用 64 位本机 DLL 文件吗?那个 DLL 文件可以动态链接到另一个本机 64 位 DLL 文件吗?如果我使用托管的 64 位 DLL 文件作为楔形 DLL 文件会有所不同吗?由于硬件供应商的 DLL 文件中的一些调用,我只使用了一个楔形 DLL 文件。他们将 void 指针传递给缓冲区,并且在 C# 中这样做太复杂了(必须检查“允许不安全代码”等)所以,我的楔形想法效果更好......我做了所有C++ 中的繁重工作并将更多结构化数据传回 C# 代码。

0 投票
2 回答
1166 浏览

database - VisualStudio 安装项目:通过 CustomAction BadImageFormatException 部署带有数据库的项目

我有一个使用 MSSQL 数据库并为此生成 VisualStudio 设置项目的项目的解决方案。然后我用一个安装程序类制作了另一个项目,该项目应该在安装时部署我的数据库。

因此,我使用本教程生成了 CustomAction Installer 类,并尝试类似的 C# 解决方案。

当我现在运行我的设置项目并想要安装我的应用程序时,我总是收到错误消息:

初始化安装时发生异常: System.BadImageFormatException: File or assembly ... \ CustomAction.dll 或其依赖项之一未找到。该程序集由比当前加载的术语更新的术语插入,并且无法加载。

我希望这个错误是可以理解的,我把它从德语翻译成英语......

所以我很感激任何提示或提示来解决这个问题。

问候

0 投票
2 回答
3010 浏览

c# - hnetcfg.dll 抛出 BadImageFormatException

从这个问题执行引用c:\windows\system32\hnetcfg.dll管理 Windows 防火墙的代码,会在加载 DLL 时立即导致。BadImageFormatException

在NUnit中打开 414KB DLL 文件进行检查会引发相同的异常。

我正在运行 Windows 7。任何解决方案?

0 投票
2 回答
26048 浏览

.net - Bad Image Format异常问题

可能重复:
.Net 程序集加载问题期间出现 BadImageFormatException

我正在尝试运行一个加载程序集并提取其版本的 exe 文件。该文件在 win xp 上运行良好,但在 win 7 上运行时崩溃,出现以下异常。

有人遇到过这个问题吗?这个问题的可能解决方案是什么?

0 投票
8 回答
121012 浏览

.net - System.BadImageFormatException 尝试加载格式不正确的程序

我正在为另一个基于公共 .NET API 的程序编写插件。通常,这些插件是通过创建引用 API 程序集的类库 DLL 来制作的。然后通过从 API 程序集中的基本命令类继承来创建命令类。然后应用程序被设置为引用插件 DLL 文件,然后还负责在用户请求时实际启动自定义命令类。

但是,现在我正在尝试通过 自动生成一些代码System.CodeDOM,并希望创建一个简单的控制台应用程序,该应用程序根据 API 程序集中的类型自动生成新的类类型。

然而,当我尝试运行我的应用程序时,出现以下异常。

System.BadImageFormatException 未处理消息:无法加载文件或程序集“RevitAPI,版本=2011.0.0.0,文化=中性,PublicKeyToken=null”或其依赖项之一。试图加载格式不正确的程序。

通常我需要将插件程序集的目标框架设置为3.5。然而现在我发现如果我将控制台应用程序的目标框架设置为 2.0,上述错误就会消失。但是,我的控制台应用程序已经引用了我的其他目标框架设置为 3.5 的类库。而且我真的不想围绕 2.0 框架重写它们。

0 投票
2 回答
9048 浏览

sqlite - 运行 ServiceStack 示例时出现 System.BadImageFormatException。

我正在尝试运行ServiceStack示例项目。当我运行 Web 客户端时,我收到以下错误:

我已经下载了最新的 System.Data.SQLite.dll 文件并尝试使用它,但仍然出现同样的错误。我在 Windows 7 64 位机器上运行 64 位 VS2010。

0 投票
3 回答
2257 浏览

c# - 从其他异常的 StackTrace 获取 BadImageFormatException

在我的服务器中,我遇到了一个异常,我发现它似乎没问题。

问题是,当我编写它的StackTrace时,我得到了BadImageFormatException

我试图调试服务器。捕获异常时停在断点上,我可以看到它的所有字段,但在 StackTrace 中我看到了 BadImageFormatException。

任何想法是什么导致了这个问题?

我的服务器详细信息 -

它是用 .NET FW 4 用 C# 编写的。
我还使用用托管 C++ 编写的 FrameWork。
我将我的服务器编译到 x86 平台。并在 x64 机器上运行服务器。

完整的 BadImageFormatException -

System.BadImageFormatException:方法的参数和签名不匹配。在 System.Reflection.RuntimeMethodInfo.GetParameters(IRuntimeMethodInfo methodHandle, MemberInfo member, Signature sig, ParameterInfo& returnParameter, Boolean fetchReturnParameter) 在 System.Reflection.RuntimeMethodInfo.FetchNonReturnParameters() 在 System.Reflection.RuntimeMethodInfo.GetParameters() 在 System.Diagnostics.StackTrace .ToString(TraceFormat traceFormat) 在 System.Environment.GetStackTrace(Exception e, Boolean needFileInfo) 在 System.Exception.GetStackTrace(Boolean needFileInfo) 在 System.Exception.ToString(Boolean needFileLineInfo) 在 System.Exception.ToString() 在 log4net。 log4net.ObjectRenderer 上的 ObjectRenderer.DefaultRenderer.RenderObject(RendererMap rendererMap, Object obj, TextWriter writer)。

0 投票
2 回答
3595 浏览

.net - CorFlags.exe、System.Data.SQLite.dll 和 BadImageFormatException

http://sqlite.phxsoftware.com/运行CorFlags.exeSystem.Data.SQLite.dll会产生以下输出。

如您所见,32BIT未指定且PE等于PE32。根据Moving from 32-bit to 64-bit application development on .NET Framework,这意味着程序集是Any CPU。但是,使用 64 位应用程序的程序集会导致错误:

System.BadImageFormatException:无法加载文件或程序集“System.Data.SQLite”或其依赖项之一。试图加载格式不正确的程序。文件名:'System.Data.SQLite'

如果 CorFlags.exe 报告Any CPU,为什么会发生异常?组件是否错误地标有32BIT: 0

我知道也有 64 位版本,我只是想知道是什么导致了错误。