我在一些互操作中做了一些愚蠢的事情(使用
DllImport
)有一次,它仍然在32位机器上工作。
有什么不同的做法(为什么?)在导致方法1行为不同的64位应用程序上?
方法1(错误的方式):
ref byte param //Signature of `DllImport`ed function
ref myarray[0] //Parameter passed in when calling function
方法2(正确的方式):
byte[] param //Signature of `DllImport`ed function
myarray //Parameter passed in when calling function
应用程序是为32位计算机上的CPU类型“Any”编译的,方法1和方法2都按预期工作和行为。
在64位计算机上,只有方法2工作正常。对于方法1,应用程序只能看到数组的第一个元素。数组的其余部分都归零了。