日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > c/c++ >内容正文

c/c++

C/C++:Windows编程—调用DLL程序的2种方法

發(fā)布時(shí)間:2025/3/15 c/c++ 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C/C++:Windows编程—调用DLL程序的2种方法 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

前言

先簡(jiǎn)單介紹下DLL。DLL:Dynamic Link Library 動(dòng)態(tài)鏈接庫(kù) 是一個(gè)被其他應(yīng)用程序調(diào)用的程序模塊,其中封裝了可以被調(diào)用的資源或函數(shù)DLL 文件屬于可執(zhí)行文件,它符合Windows系統(tǒng)的PE文件格式,不過(guò)它是依附于EXE文件創(chuàng)建的的進(jìn)程來(lái)執(zhí)行的,不能單獨(dú)運(yùn)行。為了演示調(diào)用DLL程序的2種方法,我們先建一個(gè)簡(jiǎn)單的DLL程序。

建一個(gè)簡(jiǎn)單的DLL程序

IDE 使用vs2015,新建工程DLLTest1,選擇空項(xiàng)目,創(chuàng)建完畢 右擊項(xiàng)目 -> 屬性 -> 常規(guī) -> 配置類型 選擇 動(dòng)態(tài)庫(kù).dll。還是上一張圖吧。

添加頭文件Calc.h 在頭文件中添加導(dǎo)出函數(shù)add函數(shù)

#pragma onceextern "C" __declspec(dllexport) int add(int a, int b);

cpp文件中進(jìn)行實(shí)現(xiàn)

#include "Calc.h"int add(int a, int b) {return a + b; }

生成解決方案,在Debug下生成 DLLTest1.dll和DLLTest1.lib

對(duì)DLL程序調(diào)用方式一

同樣是新建空項(xiàng)目,添加main.cpp文件,將 DLLTest1.dll和DLLTest1.lib 拷貝到工程代碼目錄,然后項(xiàng)目添加添加現(xiàn)有項(xiàng)。項(xiàng)目目錄如下
在這里插入圖片描述

使用代碼如下:

#include <stdio.h> #include <stdlib.h> #include <Windows.h>#pragma comment(lib,"DLLTest1.lib")extern "C" int add(int a, int b);// 靜態(tài)調(diào)用DLL庫(kù) void StaticUse() {int sum = add(10, 20);printf("靜態(tài)調(diào)用,sum = %d\n", sum); }

方式一 是靜態(tài)調(diào)用,在連接階段 將DLL庫(kù)信息編寫(xiě)到EXE文件中,當(dāng)調(diào)用DLL庫(kù)中的函數(shù)是會(huì)加重DLL庫(kù)。#pragma comment(lib,“DLLTest1”)告訴連機(jī)器需要在FirstDll.lib文件中找到DLL中導(dǎo)出函數(shù)的信息。

對(duì)DLL程序調(diào)用方式二

方法一屬于靜態(tài)調(diào)用,其方式是通過(guò)鏈接器將DLL函數(shù)的導(dǎo)出函數(shù)寫(xiě)進(jìn)可執(zhí)行文件。現(xiàn)在使用第二種方式,相對(duì)前一種 是動(dòng)態(tài)調(diào)用。動(dòng)態(tài)調(diào)用不是鏈接時(shí)完成的,而是在運(yùn)行時(shí)完成的。動(dòng)態(tài)調(diào)用不會(huì)在可執(zhí)行文件中寫(xiě)入DLL相關(guān)的信息。代碼如下:

// 動(dòng)態(tài)調(diào)用DLL庫(kù) void DynamicUse() {// 運(yùn)行時(shí)加載DLL庫(kù)HMODULE module = LoadLibrary("DLLTest1.dll");if (module == NULL){printf("加載DLLTest1.dll動(dòng)態(tài)庫(kù)失敗\n");return;}typedef int(*AddFunc)(int, int); // 定義函數(shù)指針類型AddFunc add; // 導(dǎo)出函數(shù)地址add = (AddFunc)GetProcAddress(module, "add");int sum = add(100, 200);printf("動(dòng)態(tài)調(diào)用,sum = %d\n",sum); }

用到了以下2個(gè)函數(shù):

// 根據(jù)DLL文件名 加載DLL // suc,返回一個(gè)模塊句柄 HMODULE WINAPI LoadLibrary(_In_ LPCTSTR lpFileName ); // suc,返回lpProcName指向的函數(shù)名的函數(shù)地址。 FARPROC GetProcAddress(HMODULE hModule,LPCSTR lpProcName );

測(cè)試

測(cè)試代碼如下:

#include <stdio.h> #include <stdlib.h> #include <Windows.h>#pragma comment(lib,"DLLTest1.lib")extern "C" int add(int a, int b);// 靜態(tài)調(diào)用DLL庫(kù) void StaticUse() {int sum = add(10, 20);printf("靜態(tài)調(diào)用,sum = %d\n", sum); }// 動(dòng)態(tài)調(diào)用DLL庫(kù) void DynamicUse() {HMODULE module = LoadLibrary("DLLTest1.dll");if (module == NULL){printf("加載DLLTest1.dll動(dòng)態(tài)庫(kù)失敗\n");return;}typedef int(*AddFunc)(int, int); // 定義函數(shù)指針類型AddFunc add;add = (AddFunc)GetProcAddress(module, "add");int sum = add(100, 200);printf("動(dòng)態(tài)調(diào)用,sum = %d\n", sum); }int main(char argc, char* argv[]) {StaticUse();DynamicUse();system("pause");return 0; }

驗(yàn)證結(jié)果,和我們想象的一樣。

完整項(xiàng)目

如果 有需要,這個(gè)2個(gè)工程這里下載。

總結(jié)

以上是生活随笔為你收集整理的C/C++:Windows编程—调用DLL程序的2种方法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 春色激情 | 日本japanese乳偷乱熟 | 最近中文字幕免费视频 | 精品一区在线看 | 女人舌吻男人茎视频 | 水蜜桃色314在线观看 | 又黄又爽又色视频 | 日韩精品免费一区二区三区 | 成人在线一区二区 | 超碰免费在线 | 色婷五月天| 99热久久这里只有精品 | 国产精品久久久爽爽爽麻豆色哟哟 | 亚洲久久久久久 | 国产精品国产三级国产专区51区 | 欧美一区二区三区四区五区六区 | 亚洲欧美国产一区二区三区 | 日本黄色片免费 | 欧美呦交| 中文字幕人妻互换av久久 | 成人在线精品视频 | 国产视频入口 | 国产高清二区 | 国产一区二区福利 | 国产亚洲综合在线 | 精品一区二区在线看 | 中文字幕精品在线视频 | 亚洲黄站| 最新国产在线 | 动漫涩涩免费网站在线看 | 日本一区二区在线免费观看 | 娇妻第一次尝试交换的后果 | 超清av在线 | 在线观看a网站 | 久久久久午夜 | 国产床上视频 | 午夜国产小视频 | 日本国产精品视频 | 一区二区三区欧美日韩 | 男男受被啪到高潮自述 | 亚洲熟妇av乱码在线观看 | 亚洲欧美日韩中文在线 | 无码人妻丰满熟妇区96 | 91福利在线导航 | 欧美视频在线一区二区三区 | 成人爱爱视频 | 亚洲午夜精品在线观看 | 亚洲成人三区 | 久久久精品一区 | 国产精品久久久久久久久久久久久 | 日韩在线电影一区二区 | 日本一本久草 | 亚洲美女毛片 | 波多野42部无码喷潮在线 | 成年人在线免费观看视频网站 | 看全色黄大色黄大片大学生 | 91高清网站 | 高潮久久久 | 想要视频在线 | 91偷拍一区二区三区精品 | 国产一级做a | 欧美少妇一级片 | 97成人在线| 国产xxxx| 国产性生活片 | 蜜臀av夜夜澡人人爽人人 | 奇米影视大全 | 日韩久久久精品 | 吻胸摸激情床激烈视频 | 朴银狐电影中文在线看 | 国产又粗又猛视频免费 | 一级特黄高清 | 强videoshd酒醉 | 四虎国产成人永久精品免费 | 免费一级黄 | 无码日韩精品一区二区 | 亚洲欧美日韩中文在线 | 日本黄色播放器 | 欧美人体视频 | 99久久精品一区二区 | av青青 | 麻豆国产在线视频 | 欧美日韩免费一区 | 人与拘一级a毛片 | 在线观看中文字幕 | 欧美xxxx视频| 深夜视频免费在线观看 | 中文字幕在线资源 | 日韩sese| 亚洲欧美日韩精品久久 | 伊人999 | 中文 欧美 日韩 | 国产精品理论片 | 亚洲福利一区二区三区 | juliaannxxxxx高清 黄页网站在线播放 | 丰满少妇麻豆av苏语棠 | 日韩精品久久久久久久电影99爱 | 黄色福利视频 | 欧美亚洲日本 |