当前位置:
工控论坛
> >
产品
>
自动化软件
我要发帖
求助:用VC++做的.dll文件在VB中调用时出现调用约定错误
点击:
3117
| 回复:
17
gongkongedit
关注
私信
精华:1099帖
求助:0帖
帖子:14392帖 | 54470回
年度积分:0
历史总积分:622
注册:2008年9月08日
发表于:2003-12-16 09:41:00
楼主
我在VC++中做的一个.dll急需在VB中调用,但是总出现调用约定错误,我检查了函数参数的个数和类型,但仍然不对,为什么?
分享到:
收藏
邀请回答
回复楼主
举报
剑工
关注
私信
精华:1帖
求助:0帖
帖子:4帖 | 1028回
年度积分:0
历史总积分:2548
注册:2002年7月26日
发表于:2003-11-18 13:41:00
1楼
我可以帮你 13072014932
回复
引用
举报
deng_lp
关注
私信
精华:5帖
求助:0帖
帖子:65帖 | 2669回
年度积分:0
历史总积分:2876
注册:2001年6月19日
发表于:2003-11-19 12:46:00
2楼
这是一个函数调用类型问题。 把你的VC函数原型及VB声明写出来。或许我可以帮你.
回复
引用
举报
gongkongedit
关注
私信
精华:1099帖
求助:0帖
帖子:14392帖 | 54470回
年度积分:0
历史总积分:622
注册:2008年9月08日
发表于:2003-11-20 15:10:00
3楼
VC函数原型:extern "C" _declspec(dllexport) long CHE(long frame[],int n); VB声明:Declare Function CHE Lib "C:\win32dllCRC.dll" (frame() As Long, ByVal n As Integer) As Long 急切盼望您的答复,祝您好运!
回复
引用
举报
deng_lp
关注
私信
精华:5帖
求助:0帖
帖子:65帖 | 2669回
年度积分:0
历史总积分:2876
注册:2001年6月19日
发表于:2003-11-20 16:44:00
4楼
VC函数原型:extern "C" _declspec(dllexport) long WINAPI CHE(long frame[],int n); VB不用改,
回复
引用
举报
gongkongedit
关注
私信
精华:1099帖
求助:0帖
帖子:14392帖 | 54470回
年度积分:0
历史总积分:622
注册:2008年9月08日
发表于:2003-11-21 09:25:00
5楼
运行VB程序时提示找不到dll的入口点,好象将WINAPI当成函数名的一部分,而不认识函数CHE了.我的dll是用win32 dynamic-link library 做的.请问是怎么回事?
回复
引用
举报
deng_lp
关注
私信
精华:5帖
求助:0帖
帖子:65帖 | 2669回
年度积分:0
历史总积分:2876
注册:2001年6月19日
发表于:2003-11-21 11:37:00
6楼
函数名称不对. 在你的VC程序中 def文件加入你的函数名称. 重新编译。
回复
引用
举报
byh
关注
私信
精华:1帖
求助:0帖
帖子:11帖 | 21回
年度积分:0
历史总积分:62
注册:2003年5月23日
发表于:2003-11-24 10:01:00
7楼
真心的感谢您!祝您好人好梦。
回复
引用
举报
byh
关注
私信
精华:1帖
求助:0帖
帖子:11帖 | 21回
年度积分:0
历史总积分:62
注册:2003年5月23日
发表于:2003-11-24 15:11:00
8楼
再打扰您一次,数组frame()中的数据传递的不对,好像没有传递到VC中,出了什么问题?
回复
引用
举报
deng_lp
关注
私信
精华:5帖
求助:0帖
帖子:65帖 | 2669回
年度积分:0
历史总积分:2876
注册:2001年6月19日
发表于:2003-11-24 15:27:00
9楼
你VB的调用命令是否写成了 frame(0)
回复
引用
举报
byh
关注
私信
精华:1帖
求助:0帖
帖子:11帖 | 21回
年度积分:0
历史总积分:62
注册:2003年5月23日
发表于:2003-11-24 16:53:00
10楼
是这样写的:Declare Function CHE Lib "C:\win32dllCRC.dll" (frame() As Long, ByVal n As Integer) As Long
回复
引用
举报
deng_lp
关注
私信
精华:5帖
求助:0帖
帖子:65帖 | 2669回
年度积分:0
历史总积分:2876
注册:2001年6月19日
发表于:2003-11-24 17:05:00
11楼
调用写成 CHE frame(0),len 试试。 不行的话把程序发到 deng_lp@21cn.com
回复
引用
举报
byh
关注
私信
精华:1帖
求助:0帖
帖子:11帖 | 21回
年度积分:0
历史总积分:62
注册:2003年5月23日
发表于:2003-11-24 17:06:00
12楼
是这样写的: frame(0) = &H1 frame(1) = &H6 frame(2) = &H0 frame(3) = &H7C frame(4) = &H0 frame(5) = &H3 r = CHE(frame, 6)
回复
引用
举报
GaryLin
关注
私信
精华:0帖
求助:0帖
帖子:4帖 | 1186回
年度积分:0
历史总积分:1263
注册:2003年4月15日
发表于:2003-11-25 13:19:00
13楼
In Win32, long of C = 4 bytes, int of C = 4 bytes; Long of VB = 4 bytes, Integer of VB = 2 bytes.
回复
引用
举报
deng_lp
关注
私信
精华:5帖
求助:0帖
帖子:65帖 | 2669回
年度积分:0
历史总积分:2876
注册:2001年6月19日
发表于:2003-11-26 08:09:00
14楼
VB程序 改为: Declare Function CHE Lib "C:\win32dllCRC.dll" (frame As Long, ByVal n As Integer) As Long call CHE( frame(0),len) 试试。
回复
引用
举报
deng_lp
关注
私信
精华:5帖
求助:0帖
帖子:65帖 | 2669回
年度积分:0
历史总积分:2876
注册:2001年6月19日
发表于:2003-12-01 10:54:00
15楼
程序已改好,并发出。 demo.exe.b ->demo.exe 收到没?
回复
引用
举报
byh
关注
私信
精华:1帖
求助:0帖
帖子:11帖 | 21回
年度积分:0
历史总积分:62
注册:2003年5月23日
发表于:2003-12-01 13:38:00
16楼
已经收到!感激之情无以言表!非常非常感谢!
回复
引用
举报
byh
关注
私信
精华:1帖
求助:0帖
帖子:11帖 | 21回
年度积分:0
历史总积分:62
注册:2003年5月23日
发表于:2003-12-16 09:41:00
17楼
再次的打扰您: 在VB中调用CRC(frame(0), 6)时,因为frame的个数不一定,因此6是一个整型变量,程序写成CRC(frame(0), n),(n是一个整型变量,赋给成一个经过计算后得出的整型值),计算出的值不对,6的位置只能写常数,怎么办? 另外,通过串口采集来的数据,其中有两个字节分别表示值的高字节和低字节,比如:H,L为字节型变量,H=&H3,L=&H25,要把它们转化成十进制的805,怎么转呢? 您的举手之劳对于我的确很重要,再次的感谢您!
回复
引用
举报
热门招聘
相关主题
发展完整组态应用的控件包 –...
[2904]
西门子1200的指针如何定义、如...
[5381]
国外某工控图形仪表控件
[2165]
组态王中指定设备地址为1时,...
[5790]
ODBC数据库函数的使用
[2189]
电动车维修全集
[2243]
实时操作系统及其应用
[2590]
CVI4.0/5.0调用VC++6.0编译生...
[2453]
组态王总是显示“调色板组件错...
[3869]
WINCC报警时间问题!
[4251]
官方公众号
智造工程师
客服
小程序
公众号