问题描述
我需要在外部dll中调用一个函数。
我声明dll和这样的功能:
<DllImport("somedll.dll",CallingConvention:=CallingConvention.Cdecl)>
Public Shared Function somefunction(ByVal XMLResponse As String,ByVal XMLSize As Integer) As Integer
End Function
文档指示somefunction
函数使用XMLResponse
参数作为缓冲区,以便将响应与一些数据一起存储。 XMLSize
是此缓冲区的大小。
我的问题是调用函数后如何获取响应以及如何声明此缓冲区以获取响应。
我知道如何将值传递给函数,但是我从未见过这种情况。
谢谢。
解决方法
<DllImport("somedll.dll",CallingConvention:=CallingConvention.Cdecl)>
Public Shared Function somefunction(ByVal XMLResponse As StringBuilder,ByVal XMLSize As Integer) As Integer
End Function
dim sb = new StringBuilder(100)
somefunction(sb,sb.Capacity)
您将需要验证函数期望的字符集,并将其添加到DllImport属性。