当x86只支持32位调用时,如何从x64应用程序调用x64 API函数。示例
<DllImport("avifil32.dll")> _
Public Shared Function AVIFileCreateStream(ByVal pfile As IntPtr, ByRef ppavi As IntPtr, ByRef ptr_streaminfo As MyAVISTREAMINFO) As Integer
End Function
场景1:x64计算机+编译为x86应用程序: avifil32.dll调用成功
场景2: x64计算机
我希望我的C#应用程序有条件地运行一个本机方法,有条件地选择运行dll的x86或x64版本。每当我试图加载32位dll时,都会得到以下错误:
Unhandled Exception: System.BadImageFormatException: An attempt was made to load a program with an incorrect format. (Exception from HRESULT: 0x8007000B)
at <exeName>.MiniDumpMethods.MiniDumpWriteDumpX86(IntPtr hProcess,
更新:我刚刚签出DLL程序集,程序显示DLL的错误如下:
错误:由于隐式依赖模块中缺少导出函数,至少有一个模块具有未解决的导入。错误:找到了不同CPU类型的模块。
我试着开发一个JNI实现已经有两天了.
我的笔记本电脑是x64,我的机器上安装了x64和x86 java。但是java环境变量被设置为x64版本。
我正在做关于x86 java、编译、头生成的所有工作,并为win32 on vs2010编译dll。
首先,我将java类编码为:
Ex1.java
public class Ex1 {
// Load the dll that exports functions callabl
当我尝试使用一个嵌入式数据库时,它有32位和64位的版本,比如SQLite和SQL Server CE在"C# - ANY CPU“中。
[两者都为32位和64位版本提供了XCOPY部署。
查看以下链接: ]
我注意到,当我们检查“首选32位”时,XCOPY部署不工作,在这种情况下,procoess不是64位,而是尝试从x64文件夹和崩溃加载ddl。
如果我们取消选中“偏好32位”,它作为64位工作,并找到正确的dll。
即使我的项目是 x86 ,它也能在x86下找到正确的ddl。
为什么“偏好32位”编译选项有这种行为?是虫子吗?
我正在VB.net中开发一个程序,并使用预编译的.NET二进制文件,但是它并不适用于x64体系结构,而且我遇到了经典的区域性问题,并且没有加载正确的文件。
System.BadImageFormatException:
Could not load file or assembly 'System.Data.SQLite, Version=1.0.65.0, Culture=neutral,
PublicKeyToken=db937bc2d44ff139' or one of its dependencies. An attempt was made to load a p
我正在Win7 x64机器上开发一个应用程序。
有一些代码调用外部.dll文件。.dll是为32位机器建造的.我遇到的问题是,当在Debug配置中的调试器中运行应用程序时,它工作得很好。一旦我切换到Release,使.dll调用的方法中的任何条目都将失败。
An unhandled exception of type 'System.BadImageFormatException' occurred in MyCool.exe
Additional information: is not a valid Win32 application. (Exception from