Csharp调用C或C++的DLL实现字符串的传递

Csharp调用C或C++的DLL实现字符串的传递

C#调用C/C++的DLL实现字符串的传递

环境:VS2013

C/C++端:

新建项目>> Visual C++ >> Win 32 控制台应用程序,后面注意选择DLL、空项目。

然后新建一个C/C++源程序文件,完成的DLL需要处理的功能,如:

int dlltest(char *str, char *ans)

{

……

}

str作为传入的字符串,ans作为传回的字符串,因内存实际在C#调用端分配,提供内存引用。

新建一个xxx.def 文件,内容如下:

LIBRARY MYDLL

EXPORTS

dlltest

其中,MYDLL是DLL项目工程名,也即最终的DLL文件名;dlltest是源程序文件中的某个函数,即DLL开放的接口。

在项目的属性配置中,配置属性>>链接器>>输入>>模块定义文件,输入xxx.def。

完成之后,生成mydll.dll,将文件复制到C#程序的目录下。

C#端:

usingSystem.Runtime.InteropServices;

[DllImport("mydll.dll",CharSet = CharSet.None, CallingConvention = CallingConvention.Cdecl)] staticextern int dlltest(byte[] str, byte[] ans);

在C#中需要注意byte[] 和string 的转换。

调用:

byte[] str = Encoding.ASCII.GetBytes(s);

byte[] ans = new byte[256];

int n = dlltest(str, ans);

string result = Encoding.ASCII.GetString(ans);

相关主题
相关文档
最新文档