网创优客建站品牌官网
为成都网站建设公司企业提供高品质网站建设
热线:028-86922220
成都专业网站建设公司

定制建站费用3500元

符合中小企业对网站设计、功能常规化式的企业展示型网站建设

成都品牌网站建设

品牌网站建设费用6000元

本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...

成都商城网站建设

商城网站建设费用8000元

商城网站建设因基本功能的需求不同费用上面也有很大的差别...

成都微信网站建设

手机微信网站建站3000元

手机微信网站开发、微信官网、微信商城网站...

建站知识

当前位置:首页 > 建站知识

c#调用c的dll-创新互联

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

创新互联是一家专业的成都网站建设公司,我们专注成都网站设计、成都网站制作、网络营销、企业网站建设,买友情链接1元广告为企业客户提供一站式建站解决方案,能带给客户新的互联网理念。从网站结构的规划UI设计到用户体验提高,创新互联力求做到尽善尽美。

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文件夹下,问题解决

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


分享题目:c#调用c的dll-创新互联
网页链接:http://bjjierui.cn/article/iopgh.html

其他资讯