首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

P\Invoke调用函数时,32位平台一般,64位平台出错

2013-11-26 
P\Invoke调用函数时,32位平台正常,64位平台出错原函数模型ReadCSE(LPCTSTR lpszPathName, short *data,lon

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的。

热点排行