请教如何编写供VB调用的非COM的DLL导出函数?
小弟创建了一个DLL工程,然后添加了一个函数,并在DLL中导出,该函数C++声明为:
long SaveImage( LPCTSTR pstrSourceFile, LPCTSTR pstrDestinationFile, long lngImageType )
然后小弟在VB中调用这个函数,于是我在VB中这样声明:
Private Declare Function SaveImage Lib "E:\ImageChange.dll" (ByVal strSourceFile As String, ByVal strDestinationFile As String, ByVal lngImageType As Long) As Long
该VB工程运行时,每当SaveImage返回后就出错(调试发现SaveImage中的代码已经执行完毕),请问小弟这两个声明是不是写错了?
问题点数:100、回复次数:8Top
1 楼sproll(sproll)回复于 2003-11-04 14:01:03 得分 0
错误代码是49,内容是:bad dll calling convention.Top
2 楼xiaohedou(小河豆(充电中.18%.))回复于 2003-11-04 23:32:36 得分 0
先标记一下!Top
3 楼flyelf(空谷清音)回复于 2003-11-05 15:56:25 得分 30
long __stdcall SaveImage(...)Top
4 楼caslwzgks(梦想家)回复于 2003-11-06 09:43:55 得分 10
agree to flyelf(空谷清音)Top
5 楼FreeSeagull(蓝天,白云,松花江)回复于 2003-11-06 09:51:33 得分 20
前两个参数是指针,应该使用ByRef方式传递。Top
6 楼FreeSeagull(蓝天,白云,松花江)回复于 2003-11-06 09:53:16 得分 20
其实,不使用stdcall方式声明函数也是可以的。只要在.DEF中声明好输出函数就可以了。Top
7 楼areshong(strength&honor)回复于 2003-11-13 16:27:56 得分 20
要在VB中调用的话,好像函数声明中需要加上extern "C"
当然,在.DEF中声明也可以Top
8 楼sproll(sproll)回复于 2003-11-13 16:42:55 得分 0
谢谢大家,我试试!Top




