SilkTest循序渐进1-调用DLL函数

昨天一位朋友希望我能讲讲如何在SilkTest中调用dll导出的函数,说实话,我也没有实际操作过,不过还是答应在有空时能够给她一个简单的例子。今天晚上捣腾了半天终于调通了一个非常非常简单的例子,不过远比我想像的困难,主要是好久没碰VC了。现在时钟指向11点,我争取20分钟内完成这篇文章。

废话不多说,关于silktest中使用dll的基本介绍,参见Silktest天天学系列4-在silktest中调用DLL

今天我们的例子,就是编写一个dll,让其导出一个函数Calculate。该函数的功能是返回输入int参数的两倍。然后我要在silktest中调用该dll中的Calculate函数,从而计算Calculate(5)的值。

下面是例子的步骤:

1.打开Visual Studio,我的是2003。新建一个VC++的project,选择类型为MFC DLL

2.命名该project为helloworld,最后它应该生成一个helloworld.dll

3.编辑头文件helloworld.h,其内容如下:
#pragma once

#ifndef __AFXWIN_H__
#error include ‘stdafx.h’ before including this file for PCH
#endif

#include “resource.h”        // main symbols
__declspec(dllexport) int Calculate (const int x);         //C++ language
//extern “C” int PASCAL EXPORT Calculate (const int x);  // C language

4.编辑源代码文件helloworld.cpp,其内容如下:
#include “stdafx.h”
#include “helloworld.h”

#ifdef _DEBUG
#define new DEBUG_NEW
#endif
// C++
__declspec(dllexport) int Calculate (const int x)
{
return 2*x;
}
// C language
/*extern “C” int PASCAL EXPORT Calculate (const int x)
{
return 2*x;
}*/

5. 编辑helloworld.def, 该文件显式指明了你要到处的函数名,这里我们导出Calculate
; helloworld.def : Declares the module parameters for the DLL.

LIBRARY      “helloworld”

EXPORTS
; Explicit exports can go here

Calculate

6. 编译,在Release目录下得到一个helloworld.dll

7.打开SilkTest新建一个project

8.新建一个hello.inc文件, 它的内容如下,注意引用dll时,请用全路径
[-] dll “F:/VS2003/helloworld/Release/helloworld.dll”
[ ]  int Calculate(int i )

9.新建一个脚本文件,它的内容如下
[ ] use “hello.inc”
[-] testcase test()
[ ] Int i
[ ] i = Calculate(5)
[ ] print(i)

10. 运行该脚本文件,它应该打印结果10

祝你顺利!

Comments 1

  1. Reply

    helloworld.dll能提供下吗?我在VS生成了一个win32的dll,拿过来用,引用不到,不知道什么原因,是不是在SilkTest没有采用对的方式来引用dll?麻烦高手指导下,谢谢

Leave a comment

请输入正确的验证码