使用.lib文件构建项目的奇怪行为

时间:2012-02-23 09:38:22

标签: visual-studio-2008 lnk2001

我正在使用visual studio 2008.我正在尝试在源代码中使用C ++库。在我的计算机上安装库后,我有一些包含文件以及一些库文件。此外,在bin文件夹中有msvcm80.dll,msvcp80.dll和msvcr80.dll。

我在链接项目时遇到问题,我在下面解释过。我在网上搜索,但我没有找到我的问题的相对答案。

我做了以下程序:

  1. 我使用了Explorer Lib软件,发现.lib文件是在发布配置中构建的。

  2. 我将visual studio解决方案设置为32位的发布模式。我不确定是否应该使用32或64.(下面我解释了当我将其更改为x64平台时会发生什么)。

  3. 我将库文件添加到链接器依赖项及其在其他库目录中的路径。

  4. 我在源代码中包含了头文件。

  5. 当我尝试构建解决方案时,我收到错误" LNK2001:未解析的外部符号"关于我在源代码中调用的函数。即使我删除了库依赖项并在链接器配置中删除了它们的路径,我也会得到相同的错误。

  6. 我的问题是为什么链接器没有在库文件的源代码中找到被调用的函数?

    当我将平台从Win32更改为x64时,我得到错误LNK 2001但是在另一个函数上。区别在于链接器抱怨我在源代码中没有直接调用的函数。

    有人可以帮我确定这个错误的原因吗?如果我没有清楚地解释我的问题,请告诉我。

    谢谢,

    艾哈迈德

1 个答案:

答案 0 :(得分:0)

您必须提供更多详细信息,可能是某些(第一个)错误消息。

在VS中正确获取链接器设置从来都不是一件容易的事。您可以查看以下几点:

  • 如果使用winsock库,请检查首先包含的库等(着名的winsock.h与winsock2.h)

  • 检查平台工具集(在您的情况下应该是v80)

  • 最后也是最重要的一点,如果丢失的外部是Windows API,您可能需要在Linker \ Additional Dependencies中指定以下内容:User32.lib,Shell32.lib,Oleaut32.lib,Advapi32.lib,具体取决于使用的API。