c#调用c的dll

如何使用C# 调用c语言写的dll

专注于为中小企业提供成都网站建设、成都网站设计服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业紫金免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了成百上千企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。

1引用命名空间:

using System.Runtime.InteropServices;

2.将需要调用的dll放到bin文件工程目录下,程序编译运行时会将该dll复制到bin文件debug文件夹下;

3.使用dllimport引用需要的函数

 [DllImport("Test.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
        public static extern void Test123(byte[] input, int port);

函数原型如下:

void __stdcall Test123(const char *input, const int port);

说明:CallingConvention 选择调用类型,取决于你写的C函数的调用类型,一般情况都会使用stdcall。

涉及到的数据类型需要认真对比下,网上有大神把能想到的都试了一遍,可以认真看下。以下变量是我使用过的,可以参考下

int&  variable                ---->    ref int  variable

char * out_variable       ---->   [MarshalAs(UnmanagedType.LPStr)] StringBuilder out_variable

const char *  In_varible ---->   byte[]       //  byte[] bytes = System.Text.Encoding.Default.GetBytes(In_varible);

4.其他:

调试过程出现了“buffer too small ”的问题,

刚初始化的使用的是StringBuilder ss = new StringBuilder();

后修改为StringBuilder ss = new StringBuilder(1024),问题解决

生成release版时,出现了找不到dll的问题,

解决方法,手动将dll复制到release文件夹下,问题解决

网站名称:c#调用c的dll
本文路径:https://www.cdcxhl.com/article2/isgeic.html

成都网站建设公司_创新互联,为您提供品牌网站制作面包屑导航微信公众号响应式网站品牌网站建设网站设计

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

网站托管运营