.net调用c/c++函数的时候,对于可变参列表为什么要固定参数个数?
标准C的printf函数参数是不固定的,那么
我在C#程序里面用DllImport来调用printf,发现指定几个参数都可以.
我想知道,.net的参数匹配是怎么能找到printf函数的,不存在一个严格匹配的形参列表啊。
[DllImport("msvcrt.dll")]
static extern int printf(string sfmt,int i);
并没有一个函数签名叫做printf的函数有固定的函数个数,那么.net如何查找和匹配到相应的本地函数调用呢? msvcrt里面的printf只有一个,那么.net匹配参数个数是如何能成功的呢?
非常疑惑,望大侠解释!
------解决方案--------------------当你这么写完的时候 [DllImport("msvcrt.dll")]
static extern int printf(string sfmt,int i);
参数就已经固定了,就能确定了。
------解决方案--------------------[DllImport("msvcrt.dll")]
static extern int printf(string sfmt,IntPtr[] i);
这样试试看