c#调用dll,使用dllImport怎么返回一个HANDLE类型

.Net技术 码拜 8年前 (2016-06-08) 1399次浏览
        [DllImport("UHF01_SDK.dll")]
        private extern static HANDLE OpenComm(int portNo);

代码是这样的,返回一个HANDLE类型的返回值,报错了
“错误 CS0246: 找不到类型或命名空间名称“HANDLE”(能否缺少 using 指令或程序集引用?)”
这个是缺少命名空间吗?是哪个命名空间?
或有其他的解决方式,就是调用一个dll里面的方法。
另外这个函数声明成static的调用第二次或多次的时候有没有影响,假如有影响,可以去掉static吗?

解决方案

10

HANDLE可以用IntPtr代替。
static用在DllImport时不可以去掉。

10

30

//c++:HANDLE(void   *)          —    c#:System.IntPtr
static 不可去掉,首先,DLLimport导入的方法实现时在“外部”,所以需要extern修饰。
另外C#中导入的方法必须为静态,则还需static修饰
c++对应C#转换大全 http://blog.csdn.net/xqf222/article/details/5877795

50

1.intptr代替句柄
2.静态方法只要内部不依赖外部属性,那么那就没博客园粉号称那么严重,实际上在编译过后任何方法本身都是静态滴

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明c#调用dll,使用dllImport怎么返回一个HANDLE类型
喜欢 (0)
[1034331897@qq.com]
分享 (0)