首页 > Windows开发 > 详细

c# 调用c 的dll

时间:2016-01-19 01:46:58      阅读:294      评论:0      收藏:0      [点我收藏+]

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

1引用命名空间:

using System.Runtime.InteropServices;

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

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),问题解决

本文出自 “不会飞的蚂蚁” 博客,请务必保留此出处http://cseck100150.blog.51cto.com/3499398/1736306

c# 调用c 的dll

原文:http://cseck100150.blog.51cto.com/3499398/1736306

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!