我怎样才能导入这个Dll

How can i import this Dll

我有一个"CLock.dll"有一些功能 例如:这是一个函数的文档

__int16 __stdcall dv_get_auth_code(unsigned char* auth);

函数 获取设置卡的授权码。 参数 auth:[out] Return 授权码,6个字符。 Return 然后成功 return 0.

我需要在我的 winform 应用程序中调用这个 dll。我试试

[DllImport("CLock.dll",CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int dv_get_auth_code([Out]StringBuilder auth);`

并在 Main()

我的代码:

StringBuilder sb = new StringBuilder();
int result = dv_get_auth_code(sb);

但它正在工作。我应该怎么办?谢谢你,祝你有美好的一天!

所提供的代码中有两个错误。 return 类型错误,没有分配缓冲区。

return类型是16位类型,在C#中是short:

[DllImport("Clock.dll")]
public static extern short dv_get_auth_code(StringBuilder auth);

然后调用需要分配缓冲区的函数。我不知道那个缓冲区应该有多大,想必你知道。

StringBuilder sb = new StringBuilder(bufferLengtg);
short result = dv_get_auth_code(sb);

这样的 API 将缓冲区的长度传递给函数总是明智的。然后它可以确保它不会溢出缓冲区。