如何把C#中的byte[]数据传到C语言写的dll函数中

我用C语言实现了一个加密算法,加密参数是以unsigned char *的形式传入传出,我想用C#写一个界面调用这个函数。不知如何实现?

看你DLL了,要是标准动态链接库的话使用以下方法:


using System.Runtime.InteropServices; 
[DllImport("c:\\abc.dll", EntryPoint="函数名")]
public static extern 数据类型 函数名 (数据类型 x, 数据类型 y, .... 参数);


如果您的DLL是com组建的直接应用DLL就ok了~
祝你好运~

温馨提示:内容为网友见解,仅供参考
无其他回答

如何把C#中的byte[]数据传到C语言写的dll函数中
看你DLL了,要是标准动态链接库的话使用以下方法:using System.Runtime.InteropServices; [DllImport("c:\\\\abc.dll", EntryPoint="函数名")]public static extern 数据类型 函数名 (数据类型 x, 数据类型 y, ... 参数);如果您的DLL是com组建的直接应用DLL就ok了~祝你好运~

C#与C互传数据
可以,发消息,命名管道都行,研究一下内NamedPipeClientStream NamedPipeServerStream,c#里这是管道相关的类。。。C语言就去研究一下namepipe内核对象的用法和相关API函数,C#只是把命名管道内核对象的相关API操作封装成类了,其实是同一个东西,C因为没有相关封装那只能用windows API来写。。。C语言写...

图书管理系统如何将c语言和c#结合起来使用程序
该系统将c语言和c#结合起来使用方法如下:在Windows环境下,可以通过使用C语言编写的动态链接库(DLL)和C#进行交互。1、需要使用C语言编写代码并将其编译为DLL。2、在C#中导入和使用这个DLL。在C#中,可以通过定义extern函数来调用DLL中的函数。3、在C#中使用C语言编写的代码。

C#调用C语言编写的DLL会不会产生什么问题?
首先,C#是可以调用C写的DLL的,引用时VS会自动将这个DLL转换为托管程序。但是你这个DLL是去调用别的C库就会出问题,因为别的库依然是非托管的。

跨语言调用C#代码的新方式-DllExport
使用`DLL Export Viewer`工具验证函数导出是否成功。该工具可帮助我们查看已导出的函数列表,确保`Add`方法成功被识别。随后,在C语言项目中调用此DLL,验证方法是否可用。同样,Go的`syscall`、Java的`JNI`、Python的`ctypes`等语言也能够轻松调用生成的DLL。尽管使用Native AOT导出方法为跨语言集成提供了...

C语言能不能调用C#的DLL?
一种是用C#写出COM组件,在系统中注册以后C或C++可以通过COM接口去创建C#里的类的实例,也可以通过生成的类型库接口去调用方法等。另一种是用C++\/CLI写一个DLL,将C#的那些托管接口转化为标准本地代码的函数接口,随后利用LoadLibrary GetProcAddress等函数去调用这些函数。直接用lib导入库的方式链接我没试...

C#中如何将double或string类型的数据转换成Decimal类型的数据,为什么...
1、打开编写C语言的软件codeblocks。2、创建一个编写C语言的文件。3、接下来开始编写程序,首先是准备转换中需要用到的变量和常量。4、接着是使用clrscr函数限定开始转换,并且给value赋值为自己想要转换的double型数据。5、再然后就是使用ecvt函数开始进行转换,并且将转换的结果付给字符数组string。6、接...

C#如何将一个BYTE数组转成INT32
自己临时写了这个代码;试试;忙~我还没去调试~byte[] arrByte\/\/假设这个是你那个数组 int[]arr=new int((arrByte.length-1));for(int i=0;i<arr.length;i++){ arr[i]=Parse.ToInt32(arrByte[i+1]);}

C#有没有像c语言中file,fread那样读取一个文件二进制的函数?
byte[] bt = new byte[1];using (FileStream fs = new FileStream("文件绝对路径", FileMode.Open, FileAccess.Read)){ fs.Seek(18, SeekOrigin.Begin);fs.Read(bt, 0, 1);fs.Close();} 读入了bt

如何实现C和C#语言的交互
第一行代码中定义了一个名为"TESTCPPDLL_API"的宏,该宏对应的内容是"__declspec(dllexport)"意思是将后面修饰的内容定义为DLL中要导出的内容。当然你也可以不使用这个宏,可以直接将"__declspec(dllexport)"写在要导出的函数前面。第二行中的"EXTERN_C",是在"winnt.h"中定义的宏,在函数前面...

相似回答