簡體   English   中英

在C ++ Visual Studio中鏈接靜態庫

[英]link static library in c++ visual studio

有人可以幫我理解這個過程嗎?

在C ++ Visual Studio 2010中

我有一個Visual Studio解決方案(我們稱其為mysol)

我有一個構建為靜態庫的項目(將其稱為staticprj)staticprj需要從外部使用一個庫(將其稱為ext.lib)

在staticprj源代碼的主體中,我使用#include extlib.h包含外部庫頭文件,並對其某些函數進行調用(將其稱為extfunctions()),我還包括指向頭文件位置的路徑。 ext.lib。

staticprj可以編譯,沒有錯誤

mysol還有另一個項目是動態庫(dynprj),它依賴於staticprj。

dynprj的源文件中也使用外部庫中的函數。

我已在dynprj的源代碼中包含#include extlib.h。 我已經包含了頭文件的路徑,我已經將extlib.h直接附加到dynprj,我還已經將ext.lib添加到鏈接器輸入中(以及ext.lib所在的路徑)。

我仍然收到lnk2001錯誤,指出未找到extfunctions()。

如果我根本不使用ext.lib,則整個結構(mysol解決方案)可以編譯。

我的問題是鏈接過程如何工作,我該怎么做才能糾正此鏈接錯誤。

(請注意,在沒有ext.lib的情況下,我對staticprj和dynprj的鏈接很好。我的編譯正常,代碼也行。我僅在嘗試將另一個ext.lib鏈接到staticprj和dynprj並使用時才出現鏈接錯誤ext.lib中的函數)

提前致謝。

我不太確定它是否可以工作,但是請嘗試將.dll放入“ mysol”調試文件夾中。 幾周前,當我將庫編譯為.dll時,我遇到了類似的問題。 我只是將該.dll放在我的調試文件夾中,並且工作得非常好。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM