vb中调用dll中的函数时的参数问题
我的dll中有一个函数extern "C " _declspec(dllexport) void _stdcall GetEdgeHistogramFromFile(LPCSTR lpszPathName,float edge[80]),
在vb中进行声明Declare Function GetEdgeHistogramFromFile Lib "cbir_dll " Alias "_GetEdgeHistogramFromFile@8 " (lpszPathName As String, edge As Single),
用vb调用函数 GetEdgeHistogramFromFile CommonDialog1.FileName, edge(0)
报错:dll调用约定错误,我想问是不是lpszPathName的类型用错了,文件名应该是string,但dll中lpszPathName是一个char指针,我想是不是这里没匹配上?请问vb中lpszPathName应该申明为什么类型?还是我的调用有问题呢?先谢谢了!
[解决办法]
改为以下声明试试
Declare Function GetEdgeHistogramFromFile Lib "cbir_dll " Alias "_GetEdgeHistogramFromFile@8 " (byval lpszPathName As String, edge As Single)
[解决办法]
Declare Function GetEdgeHistogramFromFile Lib "cbir_dll " Alias "_GetEdgeHistogramFromFile@8 " (lpszPathName As String, edge As long)as long
[解决办法]
申明成:
Declare Sub GetEdgeHistogramFromFile Lib "cbir_dll " Alias "_GetEdgeHistogramFromFile@8 " (Byval lpszPathName As String, Byval edge As Long) 'edge传递的是个地址值, 必须使用Byval方式
调用的例子:
Dim edge(0 to 79) As Single
GetEdgeHistogramFromFile ".... ", VarPtr(edge(0))