昨天一位朋友希望我能讲讲如何在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
祝你顺利!
李先生
helloworld.dll能提供下吗?我在VS生成了一个win32的dll,拿过来用,引用不到,不知道什么原因,是不是在SilkTest没有采用对的方式来引用dll?麻烦高手指导下,谢谢