Declare Function MeasureOnetime(Byval port As String) As Long VB 中无法直接操作指针,所以应该用 CopyMemory 将数据复制到一个 Single 数组中,还需要将指针释放(没试过这种用法)。最好不要将返回值定义为指针类型,这样指针的申请/释放不在一起很容易由于不匹配而崩溃。 参考通常 API 做法,将参数声明为指针,外部申请/外部释放。 extern "C" void __stdcall MeasureOnetime(BSTR port, float* ptr, int nCount); //通常应该传递缓冲区大小 Declare Sub MeasureOnetime(Byval port As String, ByVal ptr As Long, ByVal nCount As Long)'调用 Dim port As String Dim aData(100-1) As Single ... MeasureOnetime port, VarPtr(aData(0)), 100
VB 中无法直接操作指针,所以应该用 CopyMemory 将数据复制到一个 Single 数组中,还需要将指针释放(没试过这种用法)。最好不要将返回值定义为指针类型,这样指针的申请/释放不在一起很容易由于不匹配而崩溃。
参考通常 API 做法,将参数声明为指针,外部申请/外部释放。
extern "C" void __stdcall MeasureOnetime(BSTR port, float* ptr, int nCount);
//通常应该传递缓冲区大小
Declare Sub MeasureOnetime(Byval port As String, ByVal ptr As Long, ByVal nCount As Long)'调用
Dim port As String
Dim aData(100-1) As Single
...
MeasureOnetime port, VarPtr(aData(0)), 100
dim Arr() as single
Arr=你的数组