51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2100|回复: 2
打印 上一主题 下一主题

[求助] Loadrunner中使用C#的dll问题

[复制链接]
  • TA的每日心情
    奋斗
    2018-10-31 11:22
  • 签到天数: 62 天

    连续签到: 1 天

    [LV.6]测试旅长

    跳转到指定楼层
    1#
    发表于 2015-11-30 14:16:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    Loadrunner中不能直接使用C#的dll,所以我先用C++封装了一个dll来调用C#的dll,但是将C++的这个dll用lr_load_dll加载到Loadrunner中后,运行到调用函数那一步时总是报错“mmdrv has encountered a problem and needs to close.”我的C#代码如下:
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;

    namespace CSDll
    {
        public class Operater
        {
            public int TwoNum(char oper, int a, int b)
            {
                switch (oper)
                {
                    case '+':
                        return a + b;
                    case '-':
                        return a - b;
                    case '*':
                        return a * b;
                    case '/':
                        return a / b;
                }
                return 0;
            }
        }
    }


    C++代码如下:
    头文件:
    #ifdef CPDLL_EXPORTS
    #define CPDLL_API __declspec(dllexport)
    #else
    #define CPDLL_API __declspec(dllimport)
    #endif
    // 此类是从 CPDll.dll 导出的
    class CPDLL_API CCPDll {
    public:
            CCPDll(void);
            // TODO: 在此添加您的方法。
    };
    extern CPDLL_API int nCPDll;
    CPDLL_API int fnCPDll(void);
    extern "C" CPDLL_API int CP2Num(char,int,int);


    CPP文件:
    #include "stdafx.h"
    #include "CPDll.h"
    #using "CSDll.dll"
    using namespace CSDll;
    // 这是导出变量的一个示例
    CPDLL_API int nCPDll=0;
    // 这是导出函数的一个示例。
    CPDLL_API int fnCPDll(void)
    {
            return 42;
    }
    CPDLL_API int CP2Num(char oper,int a,int b)
    {
           
            Operater ^opera=gcnew Operater();
            int result=opera->TwoNum(oper,a,b);
            return result;
    }

    // 这是已导出类的构造函数。
    // 有关类定义的信息,请参阅 CPDll.h
    CCPDll::CCPDll()
    {
            return;
    }



    其中CP2Num函数是C#dll的封装,用lr_load_dll加载C++dll后,编译步暴挫,但是每次运行到CP2Num函数时就报错了mmdrv遇到问题。
    PS:我用C++控制台程序按我C++dll中的方式调用C#的dll使用正常,但是在C++控制台程序用LoadLibrary调用C++封装后的dll,编译时则报错找不到CP2Num


    各位知道的大虾们帮忙看看,十二分感谢!
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    2018-10-31 11:22
  • 签到天数: 62 天

    连续签到: 1 天

    [LV.6]测试旅长

    2#
     楼主| 发表于 2015-11-30 14:55:54 | 只看该作者
    自己顶,各位帮帮忙!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2018-10-31 11:22
  • 签到天数: 62 天

    连续签到: 1 天

    [LV.6]测试旅长

    3#
     楼主| 发表于 2015-12-1 09:02:09 | 只看该作者
    还在等,大神们帮帮忙
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

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

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

    GMT+8, 2024-11-25 07:21 , Processed in 0.068890 second(s), 22 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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