读书人

关于C#中API调用的小疑点

发布时间: 2012-06-24 18:32:37 作者: rapoo

关于C#中API调用的小问题
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;

namespace Api
{
class Program
{
[DllImport("msvcrt.dll")]
public static extern int puts(string s);
//[DllImport("msvcrt.dll")]
// internal static extern int _flushall();

static void Main(string[] args)
{
puts("Test");
//_flushall();

}

}
}


我用的是vs2010,麻烦问下各位高手这段程序有什么问题?我每次调试都是“对 PInvoke 函数“Api!Api.Program::puts”的调用导致堆栈不对称。原因可能是托管的 PInvoke 签名与非托管的目标签名不匹配。请检查 PInvoke 签名的调用约定和参数与非托管的目标签名是否匹配。”


[解决办法]
加上CallingConvention
[DllImport("msvcrt.dll", CallingConvention = CallingConvention.Cdecl)]
public static extern int puts(string s);

读书人网 >C#

热点推荐