日期:2014-05-16  浏览次数:21053 次

.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);
这样试试看