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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

第五天2017/04/06(下午2:动态链接库(DLL))

發布時間:2025/3/21 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 第五天2017/04/06(下午2:动态链接库(DLL)) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
創建動態庫:新建一個DLLVS工程,選擇“空項目”,此時會進入到新建的項目工程中;在項目工程中添加.h、.c、.cpp文件,并且填寫代碼;編譯運行,在Debug下生成.dll和.lib文件,此時創建成功。 【注解】在創建動態庫過程中,用到很多語法,比如:CC++的混合編程#ifdef __cplusplus extern "C"{#endif //函數的聲明 #ifdef __cplusplus }#endif 、導出DLL函數關鍵字__declspec (dllexport) + 函數的聲明與實現、#ifdef...#else...#endif(#ifdef __cplusplus...#else...#endif) 、 防止重定義頭文件#ifndef...#define...#endif#define =====================================================================使用動態庫:新建一個使用動態庫的項目,把上面生成的.dll和.lib文件以及.h文件拷貝到當前工程目錄下;在項目中新建main.c或者main.cpp,并加上調用的代碼,編譯運行,此時動態庫被使用。 【注解】在使用動態庫過程中,用到很多語法,比如:鏈接器的附加依賴項#pragma comment(lib,"DLL.lib") 【下面有兩個創建和使用動態庫的示例】 例1: 【功能介紹】 創建動態庫:①在頭文件中聲明兩個函數②一個在.c文件中實現,另一個在.cpp文件中實現 使用動態庫:在main.c和main.cpp使用上面生成的動態庫中的兩個函數 (1)創建動態庫 //DLL.h頭文件聲明2個函數 #ifndef DLL_H #define DLL_H #ifdef BUILD_DLL #define PORT_DLL __declspec(dllexport) #else #define PORT_DLL __declspec(dllimport) #endif #ifdef __cplusplus #include <iostream> using namespace std; extern "C" { #endifPORT_DLL int add(int a, int b); PORT_DLL void show(); #ifdef __cplusplus }; #endif#endif // DLL1_H ------------------------------ //define_add.cpp #define BUILD_DLL#include "DLL.h" PORT_DLL int add(int a,int b) { #ifdef __cplusplusprintf("DLL生成使用成功:add()函數 —— C++編譯環境\n");return a+b; #elseprintf("DLL生成使用成功:add()函數 —— C編譯環境\n");return a+b; #endif } ------------------------------ //define_show.c #define BUILD_DLL#include "DLL.h"PORT_DLL void show() { #ifdef __cplusplusprintf("\nDLL生成使用成功:show()函數 —— C++編譯環境\n"); #elseprintf("\nDLL生成使用成功:show()函數 —— C編譯環境\n"); #endif }//編譯運行,會生成DLL.dll和DLL.lib文件,再加上DLL.h文件用于下面的DLL的使用2)使用動態庫 DLL.dll和DLL.lib文件,再加上DLL.h文件拷貝到新建的工程目錄下,在配置好鏈接器中的“附加依賴項”,最后在main.cpp中寫上下面的代碼://main.c或者main.cpp調用DLL.dll中的2個函數 #include "DLL.h" #pragma comment(lib,"DLL.lib") int main() {cout<<"add(1,2) = "<<add(1,2)<<endl;show();getchar(); } 編譯運行,結果如下圖所示:

——————————————————————————————————————

2: 【創建DLL】 //head.h #ifndef _HEAD_H_ #define _HEAD_H_#ifdef __cplusplus #include <iostream> using namespace std; extern "C" { #endif__declspec(dllexport) void show1();__declspec(dllexport) void show2(); #ifdef __cplusplus }; #endif#endif ---------------------------------------------------------------- //define1.cpp #include "head.h"__declspec(dllexport) void show1() { #ifdef __cpluspluscout<<"show1:這是一個c++程序"<<endl; #elseprintf("show1:這是一個C程序\n"); #endif } ---------------------------------------------------------------- //define2.c #include "head.h"__declspec(dllexport) void show2() { #ifdef __cpluspluscout<<"show1:這是一個c++程序"<<endl; #elseprintf("show2:這是一個C程序\n"); #endif }【使用DLL】 //.dll,.lib,.h三個文件拷貝到新建的工程中,再在main.c或者main.cpp添加下面代碼 #include "head.h" #pragma comment(lib,"DLL.lib") int main() {show1();show2();getchar(); } 編譯運行,結果如下圖所示:

總結

以上是生活随笔為你收集整理的第五天2017/04/06(下午2:动态链接库(DLL))的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。