VB6 如何声明调用C++的dll 50
用C++生成的dll,dll的名称是DCMakeTif.dll,C++中的dll的原形是:voidTiffPicsHandle(constchar*pSrcFilePat...
用C++生成的dll,dll的名称是DCMakeTif.dll, C++中的dll的原形是:void TiffPicsHandle( const char *pSrcFilePath, const char *pDstFilePath, const int iDpi, FUNCPTR CBFunc )
其中,FUNCPTR CBFunc 是一个回调函数。
如何将其转换成VB6识别的函数声明形式,以及如何声明回调函数呢?
我是这样子转换的:
函数声明
Public Declare Function TiffPicsHandle Lib "DCMakeTif.dll" (ByVal ImageFiles As String, ByVal OutTiffFile As String, ByVal NewDPI As Integer, ByVal GetProgressFunct As Long)
回调函数
Public sub GetTiffOperateProg(byref Num as long )
ProgBar.value=100*Num/TotalPics
end sub
调用:
TiffPicsHandle ImageFiles ,OutTiffFile ,300,GetTiffOperateProg
结果报告错误,说dll调用约定错误。
要如何声明TiffPicsHandle 函数,如何写回调函数GetTiffOperateProg,才能成功调用这个DCMakeTif.dll呢?
赐教一个示例吧。 展开
其中,FUNCPTR CBFunc 是一个回调函数。
如何将其转换成VB6识别的函数声明形式,以及如何声明回调函数呢?
我是这样子转换的:
函数声明
Public Declare Function TiffPicsHandle Lib "DCMakeTif.dll" (ByVal ImageFiles As String, ByVal OutTiffFile As String, ByVal NewDPI As Integer, ByVal GetProgressFunct As Long)
回调函数
Public sub GetTiffOperateProg(byref Num as long )
ProgBar.value=100*Num/TotalPics
end sub
调用:
TiffPicsHandle ImageFiles ,OutTiffFile ,300,GetTiffOperateProg
结果报告错误,说dll调用约定错误。
要如何声明TiffPicsHandle 函数,如何写回调函数GetTiffOperateProg,才能成功调用这个DCMakeTif.dll呢?
赐教一个示例吧。 展开
若以下回答无法解决问题,邀请你更新回答
1个回答
2017-10-05
展开全部
__declspec(dllexport)导出的函数名就是内部链接用的函数名。用__cdecl就会换一种方式,后面没有@什么什么了第二个问题
追问
基于这个现成的dll,如果更改vb6的声明调用代码,让能成功调用 呢?还是需要如何修改dll?
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询