2012-12-20 149 views
4

因此,目前我正嘗試使用National Intruments和IVI Foundation的VISA庫來讀取/寫入各種命令外部設備。使用包含「.h」,「.lib」和「.dll」文件的第三方庫

我相對新手,我的IDE:Microsoft Visual C++ Express 2010,這是我第一次嘗試使用第三方庫,需要超過.h導入。

基本上我有一個目錄有3個頭文件,一個目錄有3個.lib庫和一個有7個DLL的目錄。他們沒有關於任何單個文件做什麼的文檔,只有整個圖書館。所以,我需要能夠獲得與我的項目相關的所有這些文件。

目前我已將所有標題導入到我的標題文件中,並將標題目錄添加到項目屬性中的包含目錄中。我也有包含添加到項目屬性中庫目錄的.lib文件的目錄。我認爲.lib文件將鏈接到的DLL,但顯然這並不是因爲我得到了錯誤的情況下:

VISA Console 2.obj : error LNK2019: unresolved external symbol [email protected] referenced in function _wmain

使用從庫中的任何功能時,會出現此錯誤。這是目前我的代碼:

#include "stdafx.h" 

int _tmain(int argc, _TCHAR* argv[]) 
{ 
    ViStatus status; 
    ViSession defaultRM, instr; 

    status = viOpenDefaultRM(&defaultRM); 

    return 0; 
} 

項目時我註釋掉viOpenDefaultRM命令,所以我想這意味着我可以使用從庫中的對象,而不是命令將建立。因爲我有3個對象聲明可以很好地構建。

好吧,這是我所有的信息,希望有人可以幫助,並希望這可以幫助別人!

回答

5

除了將.lib文件的目錄添加到庫目錄屬性之外,還需要添加鏈接程序應搜索的實際庫。

添加庫到項目的

Configuration Properties | Linker | Input | Additional Dependencies 

場。

這些DLL對構建過程來說不是必需的,但是爲了運行程序,它們應該位於PATH的目錄中或與程序文件位於同一目錄中。

+0

得到了林達也一定要使用正確的路徑:簽證提供了庫的32個和64位版本;由於Visa安裝程序創建VXIPNPPATH和VXIPNPPATH64環境變量,因此最好使用它們而不是硬編碼路徑。 – stijn

+0

@stijin對不起,是的,我已經將文件添加到其他依賴項。我添加了3個.lib文件的完整路徑,但它看起來不像對話框中的其他.lib文件。所有其他人刪除了完整的文件路徑,而我的仍然有他們的,我的沒有出現在外部依賴文件夾。 – Chrono

+0

@stijn好了,所以我將其他依賴項更改爲$(VXIPNPPATH64),並將錯誤消息更改爲:LINK:致命錯誤LNK1104:無法打開文件'C:\ Program Files \ IVI Foundation \ VISA \\。obj'可以這意味着環境變量有什麼問題? – Chrono

1

您是否向項目屬性添加了其他依賴項?

在「連接器 - >輸入」發現「附加依賴條件」和地方那裏,你從

+0

對不起,是的,我已經將文件添加到其他依賴關係。我添加了3個.lib文件的完整路徑,但它看起來不像對話框中的其他.lib文件。所有其他人刪除了完整的文件路徑,而我的仍然有他們的,我的沒有出現在外部依賴文件夾。 – Chrono