首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

vb中调用dll中的函数时的参数有关问题

2012-01-16 
vb中调用dll中的函数时的参数问题我的dll中有一个函数externC _declspec(dllexport)void_stdcallGetEdge

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))

热点排行