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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

vs2008下设置.h, .lib和 .dll 的路径配置全图及其意义

發布時間:2023/12/2 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 vs2008下设置.h, .lib和 .dll 的路径配置全图及其意义 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.


文件夾: 類型文件

include: .h (頭文件)

lib: .lib (庫)

前面二者在vs2008中通過屬性來配置。

bin: .dll (動態鏈接庫)

動態鏈接庫是通過系統路徑來配置的。

?

?添加庫(libs)文件目錄
?????方法 1:項目->屬性->配置屬性->連接器->常規->附加庫目錄”
?????方法 2:[菜單]“工具->選項->項目和解決方案->c++ 目錄”,選擇對應平臺,然后添加所需“庫文件”目錄
?????這個設置類似于設置環境變量,主要是為程序設置搜索的庫目錄,真正進行庫加載還需要進行第一種設置!
添加包含(include)文件目錄
?????方法 1:“項目->屬性->配置屬性->c/c++->常規->附加包含目錄”
?????方法 2:[菜單]“工具->選項->項目和解決方案->c++ 目錄”,添加所需“包括文件”目錄

方法1:在屬性下頭配置,只對該工程有效,重新建一個工程,這些路徑就不在了。

方法2:如果是在工具下配置的話,那是對本臺計算機的修改,即配置好該路徑之后,不止對該項目,即使新建項目這個路徑也還在,對這個計算機上頭所有的項目都使用。

至于它們和環境變量的關系,是項目運行時,先從項目所配置的路徑下頭去找相應的文件,如果找不到再根據環境變量去找文件。

?Generally speaking you shouldn't be touching the "Tools"->"VC directories" options. It's the equivalent of the PATH environment variable.(外網上別人的解答)

從以下的解答中了解環境變量與方法二設置的關系,二者是相關的。

?

Maybe it's way too late, but I had the same problem, and the solution was to move CGAL include and lib directories to the VC++ directories. Meaning: go to tools->options->"Projects and solutions"->VC++ directories.

?

There, in the "Include files" option (in "show directories for") insert (in this order):

?

$(CGALROOT)\include\CGAL\config\msvc\CGAL

?

$(CGALROOT)\auxiliary\gmp\include

?

$(CGALROOT)\lib

?

$(CGALROOT)\include

?

$(CGALROOT)\include\CGAL\config\msvc

?

$(BOOST_ROOT)

?

?

?

And in the "Library files" option insert (in this order):

?

$(CGALROOT)\auxiliary\gmp\lib

?

$(CGALROOT)\lib

?

$(BOOST_ROOT)\lib

?

?

?

This is, of course, assuming that you have the environment variables CGALROOT and BOOST_ROOT。

?

?

//---------------------------------------------------------------------------------------------------------->

?

?

當我們通過.exe安裝一些庫,頭文件,.dll, 然后在程序中調用時,如果程序運行出錯說找不到時,我們就到安裝的目錄下去找,然后放入程序的debug文件夾下,就沒問題了。

但是這樣主要是用來快速解決缺少一兩個文件,當是找不到庫的時候,那就要在下圖2中添加對應的庫

1 .h

2 .lib:

?

?

以下是兩篇參考,轉自別人博客:

1 原文鏈接:http://www.cnblogs.com/kanego/archive/2012/02/10/2344968.html

步驟:1.Tools->options->projects and solutions->VC++ directories分別在包含文件,庫文件填加了路徑

??????????? (這些路徑只告訴編譯器怎么找文件,沒有說把那里面的文件加入工程.)

???????????? (若不設置,編譯報錯:無法打開***文件)

???????? 2.Project->properties->c/c++->general->additional include directories 添加包含文件

??????????? Project->properties->linker->general->additional library directories 添加庫文件

??????????? Project->properties->linker->input->additional additional dependencies添加用到的lib

??????????? (這一步也可以在代碼中顯示調用 #pragma comment(lib, "***.lib") )

???????????? (若不添加,連接報錯:無法解析的外部符號)

???????? 3.將dll文件拷貝到工程debug文件下(如果不拷貝,編譯鏈接不報錯,運行報錯:無法找到***.dll)切記第三條,讓老子排查了一上午,當然最好把所有輸出目錄定位到一個文件下面。

?

附:

?

DLL與LIB文件的區別??

共有兩種庫:
一種是LIB包含了函數所在的DLL文件和文件中函數位置的信息(入口),代碼由運行時加載在進程空間中的DLL提供,稱為動態鏈接 庫dynamic link library。
一種是LIB包含函數代碼本身,在編譯時直接將代碼加入程序當中,稱為靜態鏈接庫static link library。
共有兩種鏈接方式:
動態鏈接使用動態鏈接庫,允許可執行模塊(.dll文件或.exe文件)僅包含在運行時定 位DLL函數的可執行代碼所需的信息。
靜態鏈接使用靜態鏈接庫,鏈接器從靜態鏈接庫LIB獲取所有被引用函數,并將庫同代碼一起放到可執行文件 中。

關于lib和dll的區別如下:
(1)lib是編譯時用到的,dll是運行時用到的。如果要完成源代碼的編譯,只需要 lib;如果要使動態鏈接的程序運行起來,只需要dll。
(2)如果有dll文件,那么lib一般是一些索引信息,記錄了dll中函數的入口和位 置,dll中是函數的具體內容;如果只有lib文件,那么這個lib文件是靜態編譯出來的,索引和實現都在其中。使用靜態編譯的lib文件,在運行程序時 不需要再掛動態庫,缺點是導致應用程序比較大,而且失去了動態庫的靈活性,發布新版本時要發布新的應用程序才行。
(3)動態鏈接的情況下,有兩個 文件:一個是LIB文件,一個是DLL文件。LIB包含被DLL導出的函數名稱和位置,DLL包含實際的函數和數據,應用程序使用LIB文件鏈接到DLL 文件。在應用程序的可執行文件中,存放的不是被調用的函數代碼,而是DLL中相應函數代碼的地址,從而節省了內存資源。DLL和LIB文件必須隨應用程序 一起發行,否則應用程序會產生錯誤。如果不想用lib文件或者沒有lib文件,可以用WIN32 API函數LoadLibrary、GetProcAddress裝載。

使用lib需注意兩個文件:
(1).h頭文件,包含 lib中說明輸出的類或符號原型或數據結構。應用程序調用lib時,需要將該文件包含入應用程序的源文件中。
(2).LIB文件,略。

使 用dll需注意三個文件:
(1).h頭文件,包含dll中說明輸出的類或符號原型或數據結構的.h文件。應用程序調用dll時,需要將該文件包含 入應用程序的源文件中。
(2).LIB文件,是dll在編譯、鏈接成功之后生成的文件,作用是當其他應用程序調用dll時,需要將該文件引入應用 程序,否則產生錯誤。如果不想用lib文件或者沒有lib文件,可以用WIN32 API函數LoadLibrary、GetProcAddress裝載。
(3).dll文件,真正的可執行文件,開發成功后的應用 程序在發布時,只需要有.exe文件和.dll文件,并不需要.lib文件和.h頭文件

?

?

2 轉自:http://wujiangrui514.blog.163.com/blog/static/22190152201272144218392/

VS 2005項目中添加lib庫
??????應用程序使用外部庫時需要進行加載,兩種庫的加載本質上都是一樣:提供功能和功能的定義。vs2005 c++ 項目設置外部庫方法如下:
1. 添加編譯所需要(依賴)的 lib 文件
?????在“項目->屬性->配置屬性->連接器->輸入->附加依賴項”里填寫“winsock.lib”,多個 lib 以空格隔開。等同于“#pragma comment(lib, "*.lib") ”語句。
2. 添加庫(libs)文件目錄
?????方法 1:項目->屬性->配置屬性->連接器->常規->附加庫目錄”
?????方法 2:[菜單]“工具->選項->項目和解決方案->c++ 目錄”,選擇對應平臺,然后添加所需“庫文件”目錄
?????這個設置類似于設置環境變量,主要是為程序設置搜索的庫目錄,真正進行庫加載還需要進行第一種設置!
3. 添加包含(include)文件目錄
?????方法 1:“項目->屬性->配置屬性->c/c++->常規->附加包含目錄”
?????方法 2:[菜單]“工具->選項->項目和解決方案->c++ 目錄”,添加所需“包括文件”目錄

方法2類似于設置環境變量。

這里我的理解是方法2和設置環境變量一樣,不同的工程之間可以共用,即設置一次之后,其他新建工程都包含,而方法1是只針對目前的工程。


4. 導入庫(import)
????在“項目->屬性->配置屬性->連接器->高級->導入庫”填寫需要生成的導入庫

? 相對路徑的設置
?????在VS的工程中常常要設置頭文件的包含路徑,當然你可以使用絕對路徑,但是如果你這樣設置了你只能在你自己的機器上運行該工程;如果其他人拷貝你的工程到其他機器上就可能無法運行,這個是因為你在建工程時可能把工程放在了E:盤,但是其他人可能會把工程放在其他根目錄下,這樣會導致找不到頭文件問題。
對于新手,在設置絕對路徑時往往會犯渾,他們不清楚這里的“相對”究竟是以什么位置為起點。其實這里的相對路徑就是相當于工程文件(XXXX.vcproj)為起點零計算出的能找到包含所需頭文件(也就是找包含所需頭文件的include目錄)的路徑。
例如你的工程文件(Count.vcproj)所在目錄路徑為:
E:projectsCountCountCount.vcproj
該工程需要包含一個圖片參數,該圖片所在路徑如下:
E:projectsCountpicpic01.jpg
這里程序中的相對路徑設置如下:
..\pic\pic02.jpg

程序代碼中的參數路徑設置時要用雙斜線:
例如:
#include "..TestLiblib.h"
#pragma comment(lib,"..\debug\TestLib.lib");

總結

以上是生活随笔為你收集整理的vs2008下设置.h, .lib和 .dll 的路径配置全图及其意义的全部內容,希望文章能夠幫你解決所遇到的問題。

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