社区
VB基础类
帖子详情
函数声明
nbabest23
2009-08-06 03:54:24
VC++ 生成了个DLL sha.dll
函数形式是 void Meid_To_pESN(char Meid[32] ,char pESN[32])
如果我想使用VB调用这个函数 改怎么声明呢,在线等待
...全文
156
21
打赏
收藏
函数声明
VC++ 生成了个DLL sha.dll 函数形式是 void Meid_To_pESN(char Meid[32] ,char pESN[32]) 如果我想使用VB调用这个函数 改怎么声明呢,在线等待
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
21 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
nbabest23
2009-08-10
打赏
举报
回复
谢谢你了,学会了不少东西 呵呵
捧剑者
2009-08-10
打赏
举报
回复
[Quote=引用 19 楼 nbabest23 的回复:]
但是VB中 是可以BYREF传递STRING型变量的啊
我用VB做过这样的DLL,设置一个BYREF型的STRING变量,用来返回函数结果描述
[/Quote]
那么C函数中的参数应该定义成BSTR*类型的才行。这里的状况比较多哦,一言难尽。
nbabest23
2009-08-10
打赏
举报
回复
但是VB中 是可以BYREF传递STRING型变量的啊
我用VB做过这样的DLL,设置一个BYREF型的STRING变量,用来返回函数结果描述
贝隆
2009-08-10
打赏
举报
回复
学习
捧剑者
2009-08-10
打赏
举报
回复
因为vb的string类型本身实质上就是一个指针,指向字符串的首地址。
程序运行是加载dll时,如果没有指明绝对路径,首先会在当前目录中寻找,然后到windows,system32等目录中查找,再到path环境变量所示的目录中寻找。如果把dll放在工程目录中,exe文件当然一下就找到dll了,如果在vb中运行程序,则当前目录是vb所在的目录,当然找不到dll了。
nbabest23
2009-08-10
打赏
举报
回复
上面的方法我试过了 可以得到正确的结果,但是请问 PESN为什么要以BYVAL方式传递呢
如果以BYREF传递就会报错,
而且我想多问一句,调用C的DLL时,为什么不生成EXE,调试的时候运行会报BAD DLL....的错误呢
3Q
捧剑者
2009-08-10
打赏
举报
回复
比如,如果C中是ANSI string则VB中要定义为string类型,并且以byval方式传递:
Dim M As String
Dim p As String
Declare Sub Meid_To_pESN Lib "sha.dll" (ByVal Meid As String, ByVal pESN As String)
Call Meid_To_pESN(M, p)
捧剑者
2009-08-10
打赏
举报
回复
[Quote=引用 13 楼 nbabest23 的回复:]
生成EXE以后运行就没有错误了,但是不能得到正确的值啊
BYTE型数组传递成字符串 好像 就不是一对一的传递了,而是两个BYTE对应一个字符,要通过ASCILL码换算
[/Quote]关键看你的C程序对数组是怎么处理的,是当作数组呢,还是字符窜,还是unicode字符串。不同的方式vb中的声明也不同。
nbabest23
2009-08-10
打赏
举报
回复
生成EXE以后运行就没有错误了,但是不能得到正确的值啊
BYTE型数组传递成字符串 好像 就不是一对一的传递了,而是两个BYTE对应一个字符,要通过ASCILL码换算
nbabest23
2009-08-07
打赏
举报
回复
提示错误
compile error:
type mismath: array or user-defined type expected
捧剑者
2009-08-07
打赏
举报
回复
[Quote=引用 8 楼 nbabest23 的回复:]
楼上的兄台,看来你还是吧VB VC弄的有点混淆了
VB中M,p不能代表一个数组吧?
[/Quote]
做实参时可以。
nbabest23
2009-08-07
打赏
举报
回复
楼上的兄台,看来你还是吧VB VC弄的有点混淆了
VB中M,p不能代表一个数组吧?
捧剑者
2009-08-07
打赏
举报
回复
最好能把你的代码详细贴上来。
捧剑者
2009-08-07
打赏
举报
回复
public M(0 To 31) As Byte
public p(0 To 31) As Byte
Declare Sub Meid_To_pESN Lib "sha.dll" (Meid() As Byte, pESN() As Byte)
Call Meid_To_pESN(M, p)
捧剑者
2009-08-06
打赏
举报
回复
呵呵,不好意思。一时昏了头,拼错了一个单词,又和DELPHI搞混了。
捧剑者
2009-08-06
打赏
举报
回复
Dim M(0 To 31) As Byte
Dim p(0 To 31) As Byte
Declare Sub Meid_To_pESN Lib "sha.dll" (Meid() As Byte, pESN() As Byte)
Call Meid_To_pESN(M, p)
nbabest23
2009-08-06
打赏
举报
回复
声明就不对啊 代码复制上去直接就是红色的
捧剑者
2009-08-06
打赏
举报
回复
出了什么错?
nbabest23
2009-08-06
打赏
举报
回复
楼上的调用了不对啊。。
捧剑者
2009-08-06
打赏
举报
回复
Dim M(0 To 31) As Byte
Dim p(0 To 31) As Byte
Delclare Procedure Meid_To_pESN Lib "sha.dll" (Meid() As Byte,pESN() As Byte)
Call Meid_To_pESN(M,p)
加载更多回复(1)
PHP核心技术 基础强化课
本课程将讲解 PHP 运行环境的安装与配置,PHP 的基本语法,包括语言标记,变量声明,变量类型,类型转换,运算符,
函数声明
等等。 课程重点: 函数。函数是编程语言中最常见的特性,但是也是新手最难理解的一个知识...
函数定义、
函数声明
、函数原型
函数定义带有函数体,
函数声明
≈函数原型 void threeline(void); 当
函数声明
宣示了函数的名字、参数类型和个数、返回值类型,它就叫函数原型。 只有带函数体的才叫定义。函数体后头不加;号 函数原型后面由分号;...
函数声明
和函数表达式的区别
函数通常有2种创建方式:
函数声明
和函数表达式。 区别: 1.
函数声明
必须包含名称,函数表达式可以省略名称。 2.
函数声明
有位置限制,不能出现在条件语句、循环语句或其他语句中,而函数表达式没有位置限制,可以出现...
c语言正确声明的格式,c语言
函数声明
(c语言
函数声明
格式)
thanks
函数声明
指函数原型声明,只有函数名,函数类型,参数个数和类型,无函数体。一般放在主函数前。逗号结尾。函数定义,除上述外,去掉结尾逗号,加函数体。可放在.函数定义就是规定函数的格式与功复能。函数...
函数声明
式和函数表达式区别
javascript中声明函数的方法有两种:
函数声明
式和函数表达式. 一、区别如下: 1).以
函数声明
的方法定义的函数,函数名是必须的,而函数表达式的函数名是可选的。(
函数声明
会被提升到当前作用域的顶部,函数表达式则不会...
VB基础类
7,764
社区成员
197,605
社区内容
发帖
与我相关
我的任务
VB基础类
VB 基础类
复制链接
扫一扫
分享
社区描述
VB 基础类
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章