51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 5680|回复: 13
打印 上一主题 下一主题

[求助] DLL调用问题

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2007-12-4 10:40:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我在.NET中用C#完成了一个DLL,在LoadRunner中调用。
Action()
{
         lr_load_dll("TestAgain.dll");
        lr_output_message ("%s",add(3));       
        return 0;
}
编译没有问题,但是一运行便报
Action.c(5): 错误: C interpreter run time error: Action.c (5):  Error -- Unresolved symbol : add.
Action.c(5): 通知: CCI 跟踪: Compiled_code(0): Action()
错误
ps:写成绝对路径和复制到脚本目录下都没有效果。
请问有那位高手能帮帮忙?谢谢了。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
 楼主| 发表于 2007-12-4 12:20:21 | 只看该作者
有那位能帮帮忙啊!!!!!!!!
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2007-12-4 13:34:48 | 只看该作者
很想帮你,但我没遇到过此类情况!
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2007-12-4 15:00:26 | 只看该作者
是不是你的DLL有问题.
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2007-12-4 15:14:00 | 只看该作者
我在VC++6.0下编译了个DLL

在LR中调用,运行结果是对的,但是也有错误提示.

#include "lrs.h"

Action()
{
        lr_load_dll("test.dll");
        lr_output_message("%s",add(2,3));
    return 0;
}

*************结果******************
Action.c(8): Error: C interpreter run time error: Action.c (8):  Error -- memory violation : Exception ACCESS_VIOLATION received.
Action.c(8): Notify: CCI trace: Action.c(8): lr_output_message(0x00af0149 "%s", 5)
.
Action.c(8): Notify: CCI trace: Compiled_code(0): Action()
.

[ 本帖最后由 wyy83 于 2007-12-4 15:15 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

6#
 楼主| 发表于 2007-12-4 16:29:15 | 只看该作者
DLL没有问题,在.net中测试过的。
回复 支持 反对

使用道具 举报

该用户从未签到

7#
 楼主| 发表于 2007-12-4 16:31:03 | 只看该作者
Action.c(8): Error: C interpreter run time error: Action.c (8):  Error -- memory violation : Exception ACCESS_VIOLATION received.
是内存方面的问题和我的不一样。
回复 支持 反对

使用道具 举报

该用户从未签到

8#
发表于 2008-5-8 14:49:23 | 只看该作者
我也出现了这个问题  很想知道解决办法
回复 支持 反对

使用道具 举报

该用户从未签到

9#
发表于 2008-5-11 01:24:34 | 只看该作者
比如用vc6 编写dll是可以的 .
选取DLL 工程
头文件如下
__declspec(dllexport)  int __stdcall base64_decode  (const unsigned char *in,  unsigned long inlen,  
                        unsigned char *out, unsigned long *outlen) ;

__declspec(dllexport)  int __stdcall     base64_encode(const unsigned char *in,  unsigned long inlen,  
                        unsigned char *out, unsigned long *outlen) ;


再插入一个.def文件
LIBRARY   BTREE
EXPORTS
   base64_decode
   base64_encode

实现base64

编译成base64Lib.dll。

然后再在 LR 中调用。

unsigned char input[]="[email=id=12333&u=liangjz&examid=1111&mail=yang@yahoo]id=12333&u=liangjz&examid=1111&mail=yang@yahoo[/email]";
unsigned char output[129]={0};
int rv;
unsigned long len=128;

lr_load_dll("D:\\c_proj\\base64Lib\\Debug\\base64Lib.dll");
    rv= base64_encode(input,strlen(input),output,&len);
lr_error_message("rv=%d,out=%s\r\n",rv,output);



编译成DLL
回复 支持 反对

使用道具 举报

该用户从未签到

10#
发表于 2008-5-12 09:57:43 | 只看该作者
lr_load_dll 不能装载.net的DLL的,只能装载标准c导出函数的DLL
关于出现 Error -- memory violation : Exception ACCESS_VIOLATION received.
是因为内存违规范围,通常是数组越界了。
回复 支持 反对

使用道具 举报

该用户从未签到

11#
发表于 2008-5-12 12:02:08 | 只看该作者
.net的dll和我们常用的动态链接库不一样, 它的dll还是需要.net的运行环境(我碰到过这个问题的,呵呵)
用C++写动态链接库吧
回复 支持 反对

使用道具 举报

该用户从未签到

12#
发表于 2008-5-12 19:56:20 | 只看该作者
.net生成的是托管dll

并非原生代码生成的。
回复 支持 反对

使用道具 举报

该用户从未签到

13#
发表于 2008-5-12 23:40:05 | 只看该作者
偶对.net没有研究

一般都是
1)写普通函数,main函数测试
2)封装 DLL
3)用 LoadLibrary API 动态加载,再获取函数地址执行测试
4)lr_load_dll 调用测试
回复 支持 反对

使用道具 举报

该用户从未签到

14#
发表于 2012-8-7 11:14:14 | 只看该作者
回复 10# DeViLIvy


    你好:我遇到了个问题 希望能帮个忙···
解释器运行时错误: Action.c (31):  Error -- memory violation : Exception ACCESS_VIOLATION received。
我在脚本回放时没有问题,在场景中执行并发量控制在25以内也没有问题,但是30后就开始报这个错误了
如果知道请发个邮件给我 谢谢:yhy_study@163.com
附图为程序报错:
回复 支持 反对

使用道具 举报

本版积分规则

关闭

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

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

GMT+8, 2024-11-8 21:44 , Processed in 0.070721 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

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