日期:2014-05-17  浏览次数:20691 次

P\Invoke调用函数时,32位平台正常,64位平台出错
原函数模型
ReadCSE(LPCTSTR lpszPathName, short *data,long length)

用DllImport引用的时候,函数修改如下
[DllImport("test.dll",CharSet = CharSet.Ansi)]
public static extern bool ReadCSE(string lpszPathName, [In, Out] short[] data, int length);

后来测试时,在32位平台上可以正常运行。
在win7 64位上运行时,就会报ReadCSE函数出错。

请问这个引用函数的写法上,有什么跟win7 64位不兼容的地方吗?

------解决方案--------------------
项目右键属性->项目设计器->生成->平台->把'默认设置(任何 CPU)'改为x86。

因为'任何 CPU'的程序在64位的机器上就会用运行为64位,而64程序是不能加载32位dll的。