我有一个C#(.净3.5,VS2005专业)应用程序的使用不受管理的32位的图书馆编写的C/C++。API我使用的是这样的:

void*初始化(int x);

voic GetData(void*);

和这个作品当我运行了它在Windows XP32位,但在Windows XP64bit它抛出例外:

未经处理的例外情况:系统。反射。这样的:异常已经被通过的目标的一个调用。--->系统。BadImageFormatException:试图载有不正确的程序格式。(异常从HRESULT:0x8007000B) 在Aktuelizator.CommonLibrary.InitializeRingBuffer(Int32暗) 在Aktuelizator.AktuelizatorWService.AktuelizatorWS..构造函数()

这些非管理DLL的工作在64位XP当从32位unmanages应用程序writetn在C/C++。

没有任何人有任何想法?

有帮助吗?

解决方案

你建立结构平台是设定为'任何CPU',这意味着在64位的操作系统运行为64点,你不能载dll。它设置,而不是x86,这将迫使它运行为的32位无关的操作系统和dll将装载罚款。

其他提示

这听起来像你的DLL只编译为32位,但是你试图把它从一个32位和64位的过程。前将工作,当然。后来,但是,不会。32位Dll只能用于32位进程。尝试编制DLL到64位的目标,并让所C#应用程序使用的那一个。

检查所有的参数,定义为Int32,这实际上应因此.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top