如何编写DLL让VB接受其返回的字符串

Friday 2000-01-20 12:56:00
...全文
232 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
littletao 2000-01-21
  • 打赏
  • 举报
回复
一般不用funtion形式返回,而是把输出也封装字输入中,如下例:
Declare Function GetComputerName Lib "kernel32" Alias "GetComputerNameA" (ByVal lpBuffer As String, nSize As Long) As Long

Sub GetComputerName_test()
Dim Name As String, Length As Long

Length = 255
Name = String(Length, 0)
GetComputerName Name, Length
Name = Left(Name, Length)
MsgBox "此一电脑的名称=" & Name, , "GetComputerName"
End Sub
solomon 2000-01-21
  • 打赏
  • 举报
回复
What is your DLL type? ActiveX DLL or normal DLL
in ActiveX DLL, it's very simple.
in normal DLL, your must Convert your string to UNICODE before
return. use MultiByteToWideChar.
if you don't like MultiByteToWideChar in C,
you can also use result = StrConv(buf, vbtoUniCode) in VB
here is a sample:
in VB:
Private Declare Function RevString Lib "MyDLL" Alias "RevString" (ByVal lpBuffer As String, ByRef BufOut, nSizeBuf As Long) As Long

s = "xxx[Chinese]XXX"
buf = StrConv(s, vbfromUnicode)
call RevString(buf, sout, 255)
s = StrConv(sout, vbtoUnicode)

in C:
__declspec( dllexport ) void RecString(char *, char*, long);
void RecString(char *, char*, long)
{
do something
}
in your MAKEFILE
EXPORTS
RecString@1


kathywp 2000-01-21
  • 打赏
  • 举报
回复
上面的代码中dis的返回值在VB中
ByVal 变量=DIS()
(ByVal 变量)为字符串指针
变量为字符串
明白了吧!
Firing_Sky 2000-01-20
  • 打赏
  • 举报
回复
什么意思?
Friday 2000-01-20
  • 打赏
  • 举报
回复
DLL:中
EXPORT CHAR* DIS()
VB:
Private Declare Function dis Lib "test1.dll" () as string
啥都没有反回
zyb 2000-01-20
  • 打赏
  • 举报
回复
在DLL中封装一个字符串输出函数不可以吗?
Friday 2000-01-20
  • 打赏
  • 举报
回复
kathywp 具体点,好吗?(我太笨!)
kathywp 2000-01-20
  • 打赏
  • 举报
回复
在DLL中函数类型定位字符串指针。

7,762

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧