51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 4362|回复: 11
打印 上一主题 下一主题

[原创] DLL 处理后的结果字符串怎么返回????

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2007-1-10 09:54:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
DLL 处理后的结果字符串怎么返回????
可以在
"Name=Num", "Value={result}", ENDITEM,
中被调用
程序如下:

Action()
{


        char *result;
        lr_load_dll("c:\\temp\\NdOcr.dll");
        loadLib("c:\\temp\\NdOcr25.dll","25","c:\\temp\\25_1.lib","");
        result = getCodeFromFileAdv("c:\\temp\\code.bmp","","25","25_1");
//到这步,getCodeFromFileAdv 已经能够有正确结果返回了, 但下一步用变量result 取得时候,取不到数值
//估计就是 格式 或者 数据类型上得问题
           //result = lr_eval_string(result);
        lr_message("识别结果为: %c",result);



    return 0;
}

[ 本帖最后由 judou 于 2007-1-10 10:07 编辑 ]
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2007-1-10 10:43:27 | 只看该作者
前面定义的char *result;为 char型,那么如果 result = getCodeFromFileAdv("c:\\temp\\code.bmp","","25","25_1");这一步能正确地返回值的话,那么输入出应该是lr_message("%s",result);
如果Message Formatting为%c的话,那么你的应该是一个int型.详细如下:
Character    Argument Type        Printed As  
d,i                    int              decimal number  
o                      int             unsigned octal number without a leading zero  
x,X                   int              unsigned hexadecimal number without a leading 0x  
u                      int             unsigned decimal number  
c                       int            single character  
s                       char *        print characters until either `\0' or the number of characters giv en in the precision is reached  
e,E                   double      engineering notation (m.dddddd e+exponent). If precision is greater than fractional part, prints trailing zeros  
g,G                  double       engineering notation without trailing zeros or trailing decimal point  
%                    none         print the character `%'
回复 支持 反对

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2007-1-10 11:15:20 | 只看该作者
按照你得写法
        char *result;
        lr_load_dll("c:\\temp\\NdOcr.dll");
        loadLib("c:\\temp\\NdOcr25.dll","25","c:\\temp\\25_1.lib","");
        result = getCodeFromFileAdv("c:\\temp\\code.bmp","","25","25_1");
//到这步,getCodeFromFileAdv 已经能够有正确结果返回了, 但下一步用变量result 取得时候,取不到数值
//估计就是 格式 或者 数据类型上得问题
           //result = lr_eval_string(result);
        lr_message("识别结果为: %s",result);

有错误提示:
Action.c (14): operands of = have illegal types `pointer to char' and `int'
c:\\documents and settings\\administrator\\\327\300\303\346\\test\\\\combined_test.c (5): 1 errors, not writing pre_cci.ci
回复 支持 反对

使用道具 举报

该用户从未签到

4#
 楼主| 发表于 2007-1-10 12:47:55 | 只看该作者
tttt
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2007-1-10 13:28:02 | 只看该作者
sdlkfj2 sdlkfj2 sdlkfj2

[ 本帖最后由 AlanStone 于 2007-1-16 21:10 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

6#
发表于 2007-1-10 13:29:37 | 只看该作者
sdlkfj2 sdlkfj2 sdlkfj2

[ 本帖最后由 AlanStone 于 2007-1-16 21:08 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

7#
发表于 2007-1-10 13:52:24 | 只看该作者
buff与sendchar 是指针的位置你应该问事处*buff与buff或char与char*的不同,这才有意义一点
回复 支持 反对

使用道具 举报

该用户从未签到

8#
 楼主| 发表于 2007-1-10 14:16:22 | 只看该作者
原帖由 AlanStone 于 2007-1-10 13:28 发表
这个同LR没什么关系,是C的问题,可能是你C的返回类型错误.要注意指针在传递时是否是地址传递.

lr_message("识别结果为: %s",getCodeFromFileAdv("c:\\temp\\code.bmp","","25","25_1"));

这样用就能正常了, 但就是不能用变量来取DLL 输出得值,不知道怎么搞?
估计是这个变量类型得问题
回复 支持 反对

使用道具 举报

该用户从未签到

9#
发表于 2007-1-10 14:50:59 | 只看该作者
指针没有初始化的原因.
回复 支持 反对

使用道具 举报

该用户从未签到

10#
 楼主| 发表于 2007-1-10 21:47:36 | 只看该作者
ttt
回复 支持 反对

使用道具 举报

该用户从未签到

11#
发表于 2007-1-11 09:45:49 | 只看该作者
试试用LR_SAVE_STRING(getCodeFromFileAdv("c:\\temp\\code.bmp","","25","25_1"),result)
回复 支持 反对

使用道具 举报

该用户从未签到

12#
发表于 2007-10-1 13:51:20 | 只看该作者
楼主用的是什么控件?
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-11-13 03:55 , Processed in 0.095896 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

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