C#调用C 的dll存在的问题

2019-05-18 作者:计算机教程   |   浏览(62)

C#调用C 写的DLL时,在C#程序中,使用DllImport定义C 导出函数的定义信息,之前在C 中定义导出函数时,使用了long作为参数类型,使用C#调用时,开始在64位版本是哪个测试,一切正常,可使用32位环境调试时,怎么都不对,不论怎么调整DllImport的属性设置都不正确,上网查也没查到什么有效的信息,正当想放弃是,在调试中发现本来是第二个参数的值,在第三个参数中出现,第二个参数和第三个参数都是字符串指针,突然想起long在C 程序中32位环境是32位长,64位环境是64位长,而C#的long长度固定为64位长,这正好导致在32位环境下,C#的64位long的传递到C 中,只取了32位,后32位当成了第二个参数的指针,导致参数传递不正确了,将long改成short,一切正确了。

 

特意记录一下,避免以后遇到同样的问题。

本文由永利电子游戏网站发布于计算机教程,转载请注明出处:C#调用C 的dll存在的问题

关键词: