VC6中呼叫 dll檔案中的函式

2021-07-16 22:38:03 字數 3583 閱讀 5578

vc6

中呼叫.dll

檔案中的函式

如果你想快速檢視呼叫

.dll

檔案中函式的方法,請直接從「開始

」看起。

照例,首先是一段廢話化:

花了盡兩天時間,我終於搞清楚如何呼叫

dllwhu_yang

兄,感謝你們對我在解決這一問題上的幫助。

先宣告下,我此前從未涉及過

windows

實際上,寫這篇文章的最主要原因是,我覺得呼叫

.dll

檔案裡的函式應該是個很簡單,很常規的用法,可是遺憾的是,我就查這麼點東西,可以說是費盡了周折,足足耗了將盡兩天的時間在網上「漫遊

」,到是也有很多人寫過類似的東西,但是,很遺憾,也許是因為他們覺得的太簡單而不想多羅嗦吧,我到最後愣是沒有找到能看懂的。難道像我這樣的初學者,就為了搞清楚這麼一點東西,還要系統的學一遍

windows

不成?!

you must

:似乎只要懂得基本的

c語言就能看懂這篇文章了吧。

本文主要寫給,像我這樣的,很少編寫

windows

下程式的程式設計師或者工程師們的。因此你不需要懂得

windows

,不需要懂得

vc6,只要知道基本的

c就夠了。

total

:看了很多文章,包括

msdn

上得文件,講了很多關於

dll的東西,一會兒有連什麼

api呀、

com呀、

mfc呀的都出來了。暈

~真暈,我就是想知道怎麼呼叫

.dll

檔案裡的函式,真的有這麼難嗎?在這裡,我不想拷貝貼上有關

「隱式鏈結

」「顯式鏈結

」的概念,我只想分下面兩種情況講解: 開始

一、對於已有

.lib和.h

檔案的情況

(一)為了方便讀者親自驗證與學習,這裡首先帶領大家建立乙個帶有

.lib和.h

的.dll檔案

1.首先開啟

vc6,

file=>new

,在projects

選項卡中選

"win32 dynamic-link library"

,在project name

中輸入"dll_1"

,在location

中輸入"d:/dll_1"

,然後單擊

ok按鈕。 2.

選擇"a dll that exports some symbols"

項後單擊

finish

按鈕。

3.單擊

ok按鈕,來確認你新建的專案。 4.

工程建好後,首先要按下

f7鏈結一下。不首先做這一步的話編譯時會報錯。 5.

單擊圖中最下面的

fileview

選項卡,雙擊開啟

source files

資料夾下的

dll_1.cpp

檔案。

6.請看這幾行**,實際上這是

vc6自動為我們生成的幾個範例,包括乙個變數、乙個函式和乙個類,他們就是最終生成

.dll

檔案後可以被呼叫的東東。

// this is anexample of an exported variable

dll_1_api int ndll_1=0;

// this is anexample of an exported function.

dll_1_api int fndll_1(void)

// this is theconstructor of a class that has been exported.

// see dll_1.h for the class definition

cdll_1::cdll_1()

我們將這幾行範例通通刪掉,替換為我們自己的**:

dll_1_api intftest() 7.

雙擊開啟上圖中

header files

資料夾下的

dll_1.h

檔案,逐一看這些**:

// this class i***ported from the dll_1.dll

class dll_1_api cdll_1 ;

extern dll_1_apiint ndll_1;

dll_1_api intfndll_1(void);

這些實際上就是上面提到的三個範例的宣告,當然我們把它替換成我們的**:

dll_1_api intftest(void); 8.

好了,接下來我們直接

f7,然後再看看你的

"d:/dll_1/debug"

目錄,怎樣?是不是看到了我們可愛的

dll_1.dll

和dll_1.lib

檔案?而

dll_1.h

檔案則在

"d:/dll_1"

目錄中了。

(二)接下來,我們就來實現呼叫

.dll

檔案中的

int ftest()

函式。

1.首先我們關閉剛剛做好的工程。

file=>close workspace

,然後單擊「是(

y)」按鈕,儲存我們剛才所做的一切。 2.

我們新建乙個控制台工程

file=>new

,在projects

選項卡裡選

,project name

中輸入exe_1

,在location

中輸入d:/exe_1

,然後單擊

ok按鈕。然後,確認選中

"an empty project"

後,單擊

finish

按鈕。然後單擊

ok按鈕確認。 3.

下面新建乙個

.cpp

檔案:file=>new

,在files

選項卡中,選擇

"c++ source file"

,在file

中輸入main

,單擊ok

按鈕。 4.在

main.cpp

檔案中輸入下面的**:

#include"iostream.h"

#include "dll_1.h"

void main()

在編譯、鏈結、執行之前,一定要記著先把

kingvewcliend.dll

檔案拷貝到工程資料夾內。

(二)接下來,是實現呼叫

kingvewcliend.dll

檔案中的

int startcliend(char* node)

;函式的方法:

與上面int readitemno()

;函式不同的是,

int startcliend(char* node)

;函式帶了引數,怎麼辦呢?研究下下面的**,你就明白了!:)

#include"stdio.h"

#include "windows.h"

void main()

VC6顯式呼叫DLL

通過顯式呼叫dll的方法,不需要dll的.lib或標頭檔案,而只需要dll。例如 寫好的dll中的方法為 int alarm char char 則在vc6的exe程式中,呼叫方法為 typedef int alarmfunc char char 首先定義與 hinstance hinstlibra...

vc6呼叫dll的幾種方式

一.隱式呼叫 1.在project set中和link tab頁增加lib檔案,多個檔案用空格隔開 2.增加乙個標頭檔案 include nte ce.h 並把頭檔案增加到引用的cpp中,對lib中函式進行申明如dll有個函式add 標頭檔案申明格式如下 int apientry add int a...

解析VC 6中的指標

解析vc 6中的指標 摘要 指標,在vc 中是很常見的,這裡我們並不打算去詳細講解在c 中那樣的指標用法 我們會有另外的文章去詳細討論 這裡主要講一下vc 中常見的對指標獲取的方法,包括 工具條 狀態條 控制項和視窗的指標。獲取工具條的指標 在預設狀態下,有乙個預設的工具條afx idw 我們可以根...