51Testing软件测试论坛

标题: DLL 处理后的结果字符串怎么返回???? [打印本页]

作者: judou    时间: 2007-1-10 09:54
标题: DLL 处理后的结果字符串怎么返回????
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 编辑 ]
作者: xiaoyao520    时间: 2007-1-10 10:43
前面定义的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 `%'
作者: judou    时间: 2007-1-10 11:15
按照你得写法
        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
作者: judou    时间: 2007-1-10 12:47
tttt
作者: AlanStone    时间: 2007-1-10 13:28
sdlkfj2 sdlkfj2 sdlkfj2

[ 本帖最后由 AlanStone 于 2007-1-16 21:10 编辑 ]
作者: AlanStone    时间: 2007-1-10 13:29
sdlkfj2 sdlkfj2 sdlkfj2

[ 本帖最后由 AlanStone 于 2007-1-16 21:08 编辑 ]
作者: xiaoyao520    时间: 2007-1-10 13:52
buff与sendchar 是指针的位置你应该问事处*buff与buff或char与char*的不同,这才有意义一点
作者: judou    时间: 2007-1-10 14:16
原帖由 AlanStone 于 2007-1-10 13:28 发表
这个同LR没什么关系,是C的问题,可能是你C的返回类型错误.要注意指针在传递时是否是地址传递.

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

这样用就能正常了, 但就是不能用变量来取DLL 输出得值,不知道怎么搞?
估计是这个变量类型得问题
作者: xiaoyao520    时间: 2007-1-10 14:50
指针没有初始化的原因.
作者: judou    时间: 2007-1-10 21:47
ttt
作者: chris_328    时间: 2007-1-11 09:45
试试用LR_SAVE_STRING(getCodeFromFileAdv("c:\\temp\\code.bmp","","25","25_1"),result)
作者: fdsafsd    时间: 2007-10-1 13:51
楼主用的是什么控件?




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2