C#托管代码调用C++非托管代码

1、C#调用非托管代码的方式:
这里写图片描述


2、DllImport方法调用

1)导入规则:
    i.方法名与Win API完全一样,设置EntryPoint属性,可以在c#中显示不同的方法名称;
    ii.函数除了需要DllImport类修饰符外,还需要声明public static extern类型;
    iii.函数返回值和参数必须和调用的API的完全一样;
    iv.必须引入System,Runtime.InteropServices命名空间;
    注:DLL的路径如果没有写,DllImport会按照以下三种顺序查找DLL:①exe所在的目  录;②system32目录;③环境变量目录;
2)DLLImport的可选属性:
    i.EmtryPoint:可对方法采用不同的名称,使用别名
    ii.CharSet:函数调用使用Unicode还是ANSI
    iii.ExactSpelling:False,表示让编译器自己选择使用Unicode还是ANSI
    iv.CallingConvention:它的参数只是入口点调用的约定;默认为CallingConvention.WinAPI;
    v.PreserveSig: 指示方法签名应当被保留还是被转换,当被转换时它被转换为一个具有HRESULT返回值和该返回值的一个名为retral的附加输出参数的签名,默认为true
    vi.SetLastError:指定是否保留上一次错误,默认为false;


Eg
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值