visual studio 生成dll文件以及修改dll文件名稱
Windows系統(tǒng)下Visual Studio可以通過.def文件創(chuàng)建dll。
一、準(zhǔn)備測(cè)試代碼
1.確定需要導(dǎo)出的函數(shù),test.cpp文件中定義如下
void fun1()
{
return;
}
void fun2()
{
return;
}
int main()
{
return 0;
}
2. 添加.def文件,一般添加到源文件下面。*
在代碼欄下面有一個(gè)“模塊定義文件”,即我們的.def文件
3.編寫test.def文件
LIBRARY "test"
EXPORTS
fun1
fun2
文件添加完成,下一步即可設(shè)置一些導(dǎo)出規(guī)則。
二、設(shè)置導(dǎo)出dll屬性
4.在我們的項(xiàng)目上點(diǎn)擊右鍵,選擇“屬性”。修改一下配置
平臺(tái)是64位還是32位要和我們的代碼版本保持一致。代碼版本查看如下:
屬性頁設(shè)置“目標(biāo)文件名”,目標(biāo)文件名需要和我們.def中的LIBRARY “test”,保持一致。同時(shí)修改下面的“目標(biāo)文件拓展名”為.dll
如果目標(biāo)文件名不一致可能會(huì)報(bào)以下問題。導(dǎo)致輸出的文件dll文件名不是自己設(shè)置的。
三、生成dll文件
5.設(shè)置完之后,點(diǎn)擊項(xiàng)目右鍵,生成或者重新生成,即可生成我們的dll文件。
.lib .dll .pdb 的簡(jiǎn)單介紹
.lib .dll文件都是程序可直接引用的文件,前者就是所謂的庫(kù)文件,后者是動(dòng)態(tài)鏈接庫(kù)(Dynamic Link Library)也是一個(gè)庫(kù)文件。而.pdb則可以理解為符號(hào)表文件(debug調(diào)試用)。
dll文件使用方式
我們的dll文件可以直接使用,調(diào)用windows的api LoadLibrary來加載dll,根據(jù)頭文件調(diào)用GetProcAddress 加載dll中的函數(shù),最后使用FreeLibrary釋放。
lib文件使用方式
對(duì)于程序引用.lib文件一般有兩種方式:
1、動(dòng)態(tài)鏈接 (原理)
這種方式的基本原理是lib文件中包擴(kuò)了某一段程序(函數(shù))的入口或者說是地址,而他真正的機(jī)器碼是在dll文件中,
IDE鏈接的時(shí)候?qū)?lib文件(程序地址)鏈接到源代碼中,程序運(yùn)行時(shí)到相應(yīng)位置(環(huán)境變量path,當(dāng)前目錄等)尋找dll文件并執(zhí)行其中的機(jī)器碼。
所以這種引用方式一般需要的文件一般有三個(gè):.h,.lib,.dll,生成的源程序也會(huì)比較小,因?yàn)樗槐4媪撕瘮?shù)地址,但是這種方式總是會(huì)出現(xiàn)找不到xxx.dll這種問題。
如果這時(shí)候我們還有dll的源代碼,并且希望IED可以調(diào)試源碼,那么就需要.pdb文件了,pdb文件中保存了dll的符號(hào)表,所謂符號(hào)表可以理解為機(jī)器碼(這里是dll中的)中插入的key與源代碼文件的映射,這樣只要指定源碼存放的路徑,IDE就會(huì)自動(dòng)去找源碼。
需要注意的是,pdb文件和dll文件是配套的,也就是說一旦dll文件有改動(dòng)(比如說重新生成)pdb文件就必須做相應(yīng)改變。
pdb文件也比較大,程序運(yùn)行時(shí)也會(huì)因?yàn)橐瓿捎成涠容^慢,這也是release版與debug的區(qū)別。文章來源:http://www.zghlxwxcb.cn/news/detail-629156.html
2、靜態(tài)鏈接:
這種方式只需要lib文件,當(dāng)然頭文件也是需要的。這種方式時(shí)候lib文件中有兩個(gè)部分,可以將文件后綴改為rar解壓可以看到。第一部分就是和第一種方式中的key,第二部分是.obj文件存儲(chǔ)在obj文件夾下,他相當(dāng)與dll中的機(jī)器碼,只不過這個(gè)機(jī)器碼是在鏈接的時(shí)候放入程序的,而不是在程序運(yùn)行時(shí)拿進(jìn)來的。如果這時(shí)候我們也有源代碼,并且希望IED可以調(diào)試源碼,這很容易因?yàn)槿绻鹟ib文件生成的時(shí)候模式是NDEBUG(好像不是也可以),obj文件夾下是有一個(gè)xx.pdb這個(gè)pdb文件中的東西會(huì)被IED放入程序的pdb中,所以直接指定源代碼位置使用就可以了。文章來源地址http://www.zghlxwxcb.cn/news/detail-629156.html
到了這里,關(guān)于visual studio 生成dll文件以及修改輸出dll文件名稱操作的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!