| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1374 人关注过本帖
标题:[求助]C++声明的函数怎么样用到VB中?十分不解
只看楼主 加入收藏
coachard
Rank: 3Rank: 3
等 级:新手上路
威 望:7
帖 子:1251
专家分:0
注 册:2007-8-12
收藏
 问题点数:0 回复次数:21 
[求助]C++声明的函数怎么样用到VB中?十分不解

这个问题的标题我想了很久,都不知道怎么写。问题是这样的:
最近在看API过程中碰到了很多函数在平常的资料中都找不到,只好上MSDN上搜。无奈上面的资料大多数用的都是C++的语法。现在问题就出来了,众所周知C++中有指针这一特定类型的数据,而VB中没有。我看了很久,都无法理解VB是怎么处理这样在C++中为指针的数据类型。(望指点迷津~)

现在我想了一个例子,希望大家能为我解惑:
假设现有一个由C++写的DLL名称为ADD.DLL,里面有如下函数:

int *Add(int *a,int **b,char (*c)[5])
{
int *p;
*p=*a+*b;
//经过一系列等的运算
return p;
}
(我知道上面这个函数在内存上存在很大危险,为了简便我随手写的而已,不过请先别管这方面问题)
在这个函数中,有一级指针也有二级指针,更有指针数组。返回值又是一级指针。我在VB中该以如何的形式调用该函数呢??又要用何种数据类型接收其返回值?之后该如何处理?

请各位大侠指教下~~~~~~~在此谢过!

[此贴子已经被作者于2007-8-28 21:30:25编辑过]

搜索更多相关主题的帖子: 函数 声明 
2007-08-28 21:29
multiple1902
Rank: 8Rank: 8
等 级:贵宾
威 望:42
帖 子:4881
专家分:671
注 册:2007-2-9
收藏
得分:0 
Declare语句中用到String之类的东西自然会转换为指针(地址)

其他需要强制转化的试试 AddressOf Variable_a
2007-08-28 21:49
coachard
Rank: 3Rank: 3
等 级:新手上路
威 望:7
帖 子:1251
专家分:0
注 册:2007-8-12
收藏
得分:0 
因为现在还不会用VC++写DLL,而且我没装VC++,所以我不好试。。。

我只想用这个例子类比API中的用法,,,所以我想哪得到一个比较确定的答案,虽然这有点像不劳而获。。。不过还请多见谅!!!

现在就有个疑问,如果用addressof来运算,那么一级指针用一个adressof那二级指针岂不是用两个addressof????

偶学编程,也许本身就是一个错。。。
2007-08-28 21:52
multiple1902
Rank: 8Rank: 8
等 级:贵宾
威 望:42
帖 子:4881
专家分:671
注 册:2007-2-9
收藏
得分:0 
恐怕不是

C++中能用**a是因为*a可以作为指针使用

但是VB里AddressOf AddressOf Variable_a这里,AddressOf Variable_a不能作为一个变量使用,它的值是我们需要的(目标地址),但AddressOf的参数是一个变量,AddressOf能自动转换为指针,AddressOf AddressOf Variable_a得到的可能是临时变量(AddressOf Variable_a)的指针。

可能有些API能完成类似操作吧……
2007-08-28 21:56
coachard
Rank: 3Rank: 3
等 级:新手上路
威 望:7
帖 子:1251
专家分:0
注 册:2007-8-12
收藏
得分:0 
以下是引用multiple1902在2007-8-28 21:56:44的发言:
恐怕不是

C++中能用**a是因为*a可以作为指针使用

但是VB里AddressOf AddressOf Variable_a这里,AddressOf Variable_a不能作为一个变量使用,它的值是我们需要的(目标地址),但AddressOf的参数是一个变量,AddressOf能自动转换为指针,AddressOf AddressOf Variable_a得到的可能是临时变量(AddressOf Variable_a)的指针。

可能有些API能完成类似操作吧……

就这样解释好像有点不大对。OleCreatePictureIndirect函数的最后一个参数,在VB中是IPic as IPicture,而在C++中为void**
而调用时,VB中只传了实参IPic进去而已,而没有用addressof来为IPic取地址后再传进去!


偶学编程,也许本身就是一个错。。。
2007-08-28 22:12
multiple1902
Rank: 8Rank: 8
等 级:贵宾
威 望:42
帖 子:4881
专家分:671
注 册:2007-2-9
收藏
得分:0 
以下是引用coachard在2007-8-28 22:12:21的发言:

就这样解释好像有点不大对。OleCreatePictureIndirect函数的最后一个参数,在VB中是IPic as IPicture,而在C++中为void**
而调用时,VB中只传了实参IPic进去而已,而没有用addressof来为IPic取地址后再传进去!

我猜测
IPicture不是标准类型,所以VB自然取地址(指针)作为参数传的
C++取得的是Long类型参数

2007-08-28 22:49
coachard
Rank: 3Rank: 3
等 级:新手上路
威 望:7
帖 子:1251
专家分:0
注 册:2007-8-12
收藏
得分:0 

谢谢multiple1902的解答!

没想到才一个晚上没来就沉下去了,顶~

盼望有另外的高手来发表下见解!


偶学编程,也许本身就是一个错。。。
2007-08-29 09:48
coachard
Rank: 3Rank: 3
等 级:新手上路
威 望:7
帖 子:1251
专家分:0
注 册:2007-8-12
收藏
得分:0 
再顶一下!

偶学编程,也许本身就是一个错。。。
2007-08-29 10:14
coachard
Rank: 3Rank: 3
等 级:新手上路
威 望:7
帖 子:1251
专家分:0
注 册:2007-8-12
收藏
得分:0 

再顶一次!


偶学编程,也许本身就是一个错。。。
2007-08-29 12:44
Joforn
Rank: 6Rank: 6
等 级:贵宾
威 望:23
帖 子:1242
专家分:122
注 册:2007-1-2
收藏
得分:0 
顶啥呢,VB里面全面用Long来代替指针。

VB QQ群:47715789
2007-08-29 12:52
快速回复:[求助]C++声明的函数怎么样用到VB中?十分不解
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.029766 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved