最简单的DLL
靜態(tài)鏈接庫與動態(tài)鏈接庫都是共享代碼的方式,如果采用靜態(tài)鏈接庫,則無論你愿不愿意,lib 中的指令都全部被直接包含在最終生成的 EXE 文件中了。但是若使用 DLL,該 DLL 不必被包含在最終 EXE 文件中,EXE 文件執(zhí)行時可以“動態(tài)”地引用和卸載這個與 EXE 獨立的 DLL 文件。靜態(tài)鏈接庫和動態(tài)鏈接庫的另外一個區(qū)別在于靜態(tài)鏈接庫中不能再包含其他的動態(tài)鏈接庫或者靜態(tài)庫,而在動態(tài)鏈接庫中還可以再包含其他的動態(tài)或靜態(tài)鏈接庫。
下面就是一個簡單地動態(tài)鏈接庫生成以及應用:
????? 首先,在(VS2010)新建一個(Win32 Console Application)項目,點擊OK;
??????其次,選擇DLL、空項目,再點擊finish;
??????項目建好了,下面就可以在頭文件添加一個名字為test.h的頭文件,頭文件里代碼如下:
?
#ifndef __TEST_H__ #define __TEST_H__ #include <iostream> _declspec(dllexport) int FunAdd(int x,int y); #endif?
然后在源文件中添加一個名字為test.cpp的源文件,文件里代碼如下:
?
#include "Test.h" int FunAdd(int x,int y) {return x+y; }?
這樣代碼就寫好了,然后要進行代碼編譯了,在編譯之前一定要注意,要將Solution Configurations設置為Release,否則生成的DLL文件在沒有裝Vs2010的機器上會運行出錯。
然后點擊build,在工程目錄的release文件夾會生成test.lib和test.dll文件,這兩個文件要留著備用。
??????這樣,一個動態(tài)鏈接庫就建立好了,然后就是使用的時候了。
?????
?
同樣,在(VS2010)新建一個(Win32 Console Application)項目,點擊OK;
然后點擊Console application、空項目;
添加一個頭文件和一個源文件
?????
#ifndef __DLL_TEST_H__ #define __DLL_TEST_H__ #pragma comment(lib,"test.lib") _declspec(dllimport) int FunAdd(int x,int y); #endif//源文件代碼 #include<iostream> #include "dlltest.h" using namespace std;void main() {int a=1;int b=2;cout<<FunAdd(a,b);while(1); }
?
然后將上面生成的test.lib和test.dll文件復制到該項目目錄下;
同樣項目配置要選擇Release,點擊編譯,然后到該項目的Release目錄下可以找到一個可執(zhí)行文件,然后將剛才生成的test.dll文件和該.exe放到一起就可以交付給別人使用了,運行結果是3.
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
轉載于:https://www.cnblogs.com/mu-tou-man/p/DLL.html
超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術人生總結
- 上一篇: HTML向Flex传参
- 下一篇: 构造正则表达式说明