C DLL。如何在C#中导入

时间:2019-09-23 10:49:36

标签: c# c

我必须在C#中导入一个C DLL并具有该功能:

set_pin (IN char* str_user, IN char* str_old_pin, IN char* str_new_pin)

如何用C#编写? “ IN”是什么意思?

1 个答案:

答案 0 :(得分:4)

IN表示该参数用于向该方法提供数据,而不是用于从该方法返回数据。

由于仅将数据传递给方法,因此您只需将参数声明为string-但您可能需要知道方法以哪种格式使用字符串-它们是UTF8,UTF16,ANSI等等?

一旦知道了所需的字符串格式,就可以在方法的P / Invoke声明中指定它(或选择CharSet.Auto,通常表示“ ANSI”):

[DllImport("your.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall))]
public static extern bool set_pin(string str_user, string str_old_pin, string str_new_pin);

只需使用“ CharSet.Auto”尝试一下,不要担心使用其他方法,除非它不起作用!

请注意,您没有指定方法的返回类型,因此我仅以bool为例。

如果不是标准的StdCall,则可能还需要指定调用约定。

有关详细信息,请参见the calling convention enum

另请参阅this Microsoft article for documentation on writing P/Invoke specifications