dll返回的字串有怪字符?

vb6andvc6 2009-11-28 03:40:32
typedef struct _ResultStr{
char t[255];
}ResultStr,*Lresultstr;
在C中用这个结构返回function中的字串,OK。
但是将其生成dll后,在VB6中调用时,返回的字串与在C中不同,且有怪字符!
如何解决?

...全文
151 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
vb6andvc6 2009-12-01
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 shiweifu 的回复:]
初始化啊啊啊啊
[/Quote]

要如何初始化?
t=space(254)这样也没用啊?
vb6andvc6 2009-12-01
  • 打赏
  • 举报
回复
用反函数验证可以通过。
但是它与VB同等功能的函数返回值不一样。C的dll返回的有怪字符。
---------------
用的是
typedef struct _ResultStr{
char t[255];
}resultstr,*Lresultstr;
返回方式
sz->t[0]=45;
sz->t[1]=46;
sz->t[9]='\0';

------------------
别人用的是
typedef struct _mystr{
CHAR lpStr[0x20];
}mystr, *LPmystr;
返回方式
strcpy(LPmystr->lpStr, ConvertToString(dwkData, 10, 19));
TCHAR* ConvertToString
不知为什么?
shiweifu 2009-12-01
  • 打赏
  • 举报
回复
初始化啊啊啊啊
hbvanguard 2009-11-30
  • 打赏
  • 举报
回复
如果从c的dll返回的字符串正确的话,应该是vb代码取得时候所用的buffer没有初始化为0.
vb6andvc6 2009-11-28
  • 打赏
  • 举报
回复
自已顶。
vb6andvc6 2009-11-28
  • 打赏
  • 举报
回复
各位大虾,vb中初始化了啊
jernymy 2009-11-28
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 jackyjkchen 的回复:]
注意初始化
[/Quote]
wumy_ld 2009-11-28
  • 打赏
  • 举报
回复
在vb中注意要初始化存储返回字串的数组,最后再用trim整一下。
zkw0302 2009-11-28
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 jackyjkchen 的回复:]
注意初始化
[/Quote]

顶起
sduxiaoxiang 2009-11-28
  • 打赏
  • 举报
回复
初始化t。。
jackyjkchen 2009-11-28
  • 打赏
  • 举报
回复
注意初始化
它有强大的功能: ◆支持三种窗口模式:单窗口 (SDI),多窗口 (MDI) 和伪多窗口 (PMDI); ◆完全支持 Unicode 系统 (NT/2000/XP/2003/Vista/7) 上的 Unicode 字符串; ◆支持 Unicode 代码页 (UTF-8, UTF-16LE, UTF-16BE, UTF-32LE, UTF-32BE); ◆支持系统上已经安装的任何代码页; ◆支持 DOS/Windows、Unix 和 Mac 换行符格式; ◆文件打开前预览; ◆纠正错误代码页显示; ◆文本列选; ◆多级撤消; ◆支持“正则表达式”的查找/替换,可快速搜索/替换文本字串; ◆能记住文件的代码页和插入点的位置; ◆文档的打印预览和打印; ◆支持语言模块; ◆插件支持 (语法高亮显示、文本折叠、自动完成、脚本执行、键盘宏……)。 通过插件已实现的功能: ◎Clipboard.dll: 捕捉剪贴板; ◎Coder.dll: 支持多种编程语言的语法高亮显示、文本折叠、自动完成; ◎ContextMenu.dll: 可以自定义主菜单,编辑区、MDI 标签、超链接和文件的右键菜单; ◎Exit.dll: 提供退出 AkelPad 时的消息提示框和改变按 ESC 键的行为; ◎Explorer.dll: 显示资源管理器面板; ◎Fonts.dll: 字体不用安装到系统就可动态的加载; ◎Format.dll: 行的排序和排列,提取唯一行,提取或删除重复行,固定换行……; ◎FullScreen.dll: 全屏显示的切换插件; ◎HexSel.dll: 文本与十六进制值的相互转换 (包含 ANSI 和 UNICODE); ◎HotKeys.dll: 自定义热键; ◎LineBoard.dll: 显示行号和支持书签操作; ◎Log.dll: 监视日志或捕捉实时输出; ◎Macros.dll: 录制用户的键盘动作并可随后重复它们; ◎MinimizeToTray.dll: 最小化程序到系统托盘; ◎QSearch.dll: 提供一个“快速”文本搜索的小面板; ◎RecentFiles.dll: 管理文件列表; ◎SaveFile.dll: 可以设置自动保存的间隔时间等; ◎Scripts.dll: 脚本插件,基于 Windows 脚本宿主 (WSH) 引擎,因此您可以使用各 种各样的 Windows 组件对象模型 (COM) 的对象,例如,您可以使用 RegExp 对象来执行正则表达式查找替换、筛选文本行,去除行头尾的 空字符,使用 FileSystemObject 对象来操作文件,创建快捷方式, 使用 WshShell 对象来操作 Windows 注册表,或使用 WshNetwork 对 象来运行网络功能,此外,您可以创建和执行利用一个支持自动化的 外部应用程序 (如 Word 和 Excel) 脚本……不仅如此,Scripts.dll 还为 AkelPad 而预置了一些常用的方法调用,可以调用 WinAPI 函 数,从而可以创建有用户交互界面的脚本(如SearchReplace.js等,方 法调用见 Scripts-Chs.txt),和实现更多功能…… ◎Scroll.dll: 拆分窗格或MDI窗口的水平/垂直的同步滚动、自动滚动操作; ◎Sessions.dll: 保存和恢复程序 MDI 会话; ◎SmartSel.dll: 选定文本时排除行尾标记,Home 和 End 键的智能操作; ◎Sounds.dll: 打字时发出声音; ◎SpecialChar.dll: 显示和高亮特殊字符 (空格、制表符、换行符、自动换行、垂直 制表符、换页符、空字符); ◎Speech.dll: 机器朗读选定的文本。未翻译; ◎Stats.dll: 统计显示文档的字符数、单词数、行数等; ◎Templates.dll: 使用预设的模板来创建文档; ◎ToolBar.dll: 工具栏插件,可显示和自定义常用操作的工具栏; ◎XBrackets.dll: 可以在键入左括号时自动键入右括号并把光标置中 (可能与一些中 文输入法不兼容而无法自动完成右括号),高亮显示、跳转配对的括 号,选定括号间的文本。 主程序及所有插件是经过翻译了源代码后使用编译器编译生成的。

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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