我怎样才能导入这个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 将缓冲区的长度传递给函数总是明智的。然后它可以确保它不会溢出缓冲区。
我有一个"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 将缓冲区的长度传递给函数总是明智的。然后它可以确保它不会溢出缓冲区。