VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1078|回复: 7

vc写的dll,函数如何将字符串传递给vb?

[复制链接]

2

主题

2

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
发表于 2020-10-13 11:00:01 | 显示全部楼层 |阅读模式
vc写dll,我只会写int类型的函数:

__stdcall int CALLBACK CalcSum(int a,int b);

vb中可以声明:
Private Declare Function MySum Lib "d:\MyDLL.dll" (ByVal S As Integer, ByVal D As Integer) As Integer


这样就可以在vb中使用了,可是我现在想在dll中写一个能够返回字符串的函数,并用vb的label控件把函数返回的字符串显示出来,请问dll里怎么写?vb里怎么声明?label控件怎么调用它?恳请大家帮帮忙!
回复

使用道具 举报

0

主题

8

帖子

9.00

积分

新手上路

Rank: 1

积分
9.00
发表于 2020-10-13 11:15:01 | 显示全部楼层
__stdcall int CALLBACK CalcSum(int a,int b,char *c);

vb中可以声明:
Private Declare Function MySum Lib "d:\MyDLL.dll" (ByVal S As Integer, ByVal D As Integer, ByRef c as string) As Integer
回复

使用道具 举报

0

主题

22

帖子

23.00

积分

新手上路

Rank: 1

积分
23.00
发表于 2020-10-13 11:45:01 | 显示全部楼层
BSTR/VARANT
回复

使用道具 举报

0

主题

10

帖子

8.00

积分

新手上路

Rank: 1

积分
8.00
发表于 2020-10-13 12:00:01 | 显示全部楼层
用BSTR

CString::AllocSysString
BSTR AllocSysString ( ) const;
throw( CMemoryException );

Return Value

Points to the newly allocated string.


或者
SysAllocString
BSTR SysAllocString(
  OLECHAR FAR*  sz  
);



回复

使用道具 举报

0

主题

10

帖子

9.00

积分

新手上路

Rank: 1

积分
9.00
发表于 2020-10-13 12:15:01 | 显示全部楼层
__stdcall char * CALLBACK CalcSum(int a,int b);

在vb中定义函数的返回值就字符串类型或者字符指针就可以了。。。
回复

使用道具 举报

0

主题

6

帖子

6.00

积分

新手上路

Rank: 1

积分
6.00
发表于 2020-10-13 15:15:01 | 显示全部楼层
vc寫dll,vb 調用,有趣。
回复

使用道具 举报

0

主题

30

帖子

22.00

积分

新手上路

Rank: 1

积分
22.00
发表于 2020-10-13 16:30:01 | 显示全部楼层
BSTR, RETVAL, ByRef
回复

使用道具 举报

2

主题

16

帖子

11.00

积分

新手上路

Rank: 1

积分
11.00
发表于 2020-10-13 17:30:01 | 显示全部楼层
试试:
VB中String转换为VC中的BSTR,只要把参数类型改了就可以了,但要注意使用ByRef
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表