昨天一位朋友希望我能講講如何在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)
// c language
/*extern "c" int pascal export calculate (const int 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
祝你順利!
Linux循序漸進 1
第一課 什麼是linux 簡單地說,linux是一套免費使用和自由傳播的類unix作業系統,它主要用於基於i ntel x86系列cpu的計算機上。這個系統是由全世界各地的成千上萬的程式設計師設計和實現 的。其目的是建立不受任何商品化軟體的版權制約的 全世界都能自由使用的unix相容 產品。linu...
oracle起步學習1 循序漸進
學習定要遵循循序漸進的規則,否則學到後面便會發現學習越來越吃力,因為之前的基礎不懂 oracle基礎學習要學會建表,但是建表之前必須會建表空間,會建使用者,因為乙個表是誰建的,建在哪個表空間都狠重要,我在嘗試的時候就遇到2個錯誤,但是後來解決了,在網上各位大蝦的指導下。問題 1.表建在哪個表空間2....
循序漸進學程式設計
軟體開發者是乙個日新月異的領域 it 中的大師,今天的程式設計方式與明天的程式設計或許截然不同,技術在不斷地革新,新語言 新平台的如雨後春筍般出現 更好的解決方案的冒出,因此我們需要跟得上節奏,我們沒有選擇,唯有努力提高自己。下面的幾點建議或許能幫助你成為乙個優秀地開發者。你是否聽說過 kaizen...