题
我有一个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,这实际上应因此.
不隶属于 StackOverflow