2011-05-02 76 views
3

aeon让我意识到我需要修改我的问题。静态库链上的“LNK2019:无法解析的外部符号...”

我有一个静态C++库链,建立得很好。 对于3个库A,B,C(“ - >”表示依赖关系):如果A-> B和A-> C比当我构建时成功构建一切。

我从C++控制台应用程序引用,当我建立一个应用程序我从静态库B. 例如未解决的符号: “错误195错误LNK2019:无法解析的外部符号” __declspec(dllimport的)市民:__cdecl ...“

我正在与VS2010和引用静态库的新方式意思是我没有将库添加到”其他库“,但我引用它们从新的”引用...“选项他们在VS2010上创建了这里解释:http://qualapps.blogspot.com/2010/04/static-library-dependencies-in-visual.html (我尝试使用“附加依赖项”引用但得到了相同的结果)

任何想法如何解决这个问题?!

+0

'A-> B'和'A-> C'是什么意思? – Nawaz 2011-05-02 14:44:47

+0

如果您有一个应用程序X引用lib A中的某些东西,并且lib A引用lib B以及lib C,那么当链接应用程序X时,必须将库A,B和C添加到链接程序中。如果要链接lib B和lib C会自动链接X到A,那么您需要使用#pragma注释将链接器命令添加到库A. – harper 2011-05-02 14:48:51

+0

VS2010有这种引用库的新方法。如果您选择引用A并将“链接库依赖关系”设置为“True”,则也应将其链接到引用的库。 – refaelos 2011-05-02 15:02:56

回答

7

有没有这样的事情作为一个静态库链 - 静态库不携带它依赖于哪些库的信息。因此,您需要通过链接包含导致错误的函数的库来解决此错误。

+2

这个人说真话。 – 2011-05-02 14:57:23

+0

VS2010有这种引用库的新方法。如果您选择引用A并将“链接库依赖关系”设置为“True”,则也应将其链接到引用的库。我尝试了你的想法,但没有奏效。 – refaelos 2011-05-02 15:03:39

+0

@Rafa如果我用我的工具链编译一个库,并将其提供给您,我保证其中不会有依赖性信息。 VS 2010有什么神奇的表现呢? – 2011-05-02 15:21:59

0

只是为了获得基本的权利 - 确保所有库都在控制台应用程序所在的位置,当您运行它。但是,当你构建它时,确保你的库的路径在项目中是正确的。

对不起,但我只是注意到,你正在使用新的方式来引用库,这是什么新的方式? PLZ开导!

+0

链接时出现“无法解析的符号”。应用程序的位置根本不重要。 – harper 2011-05-02 14:50:58

+0

@harper:我的部分答案是错误的,我要求错误,但它是问题的标题 - 我错过了;相应地编辑我的答案。但是,我的意思是库的位置,而不是应用程序。 – aeon 2011-05-02 15:00:37

+0

您尝试从应用程序中导出的符号是从这些库中导出的吗? – aeon 2011-05-02 15:24:29

相关问题