C# 调用外部dll过程中的参数问题

来源:互联网 发布:淘宝网情侣装卫衣 编辑:程序博客网 时间:2024/05/06 06:04

在C#中调用外部dll的时候有时会经常报错或者出现异常。主要是由于C#的参数类型与dll中函数的参数类型不一致 以及 CharSet对dll的修饰不正确引起的。


详见 C# 与 其他语言的 dll 类型对照表


此处为以C++dll 为例

int Func_dll(char* , char*); //函数的功能为返回一个整数,并设置char指针指向的char数组的值内容

由于此处函数要改变char * 所指向的内容,而不是单纯的传递副本,所以要根据参数对照表中设置为 StringBuilder类型。其他类型以此类推

delegate void Dele_Func_dll(StringBuilder str1, StringBuilder str2); //声明该函数的委托,表明调用时的类型为StringBuilder

还要注意获取dll时的CharSet修饰

[DllImport("ZMApi.dll", CharSet = CharSet.Ansi)]