2012-02-23 51 views
0

我正在使用visual studio 2008.我想在源代码中使用C++库。在我的电脑上安装库后,我有一些包含文件以及一些库文件。另外,在bin文件夹中还有msvcm80.dll,msvcp80.dll和msvcr80.dll。使用.lib文件构建项目的奇怪行为

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

我做了以下程序:

  1. 我用资源管理器库软件,并发现该.lib文件是建立在发布配置。

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

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

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

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

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

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

有人能帮我找出这个错误的原因吗?如果我没有清楚解释我的问题,请告诉我。

感谢,

艾哈迈德

+0

也许这是一个C库,所以你必须编写#include extern“C”{}这只是猜测,请联系库所有者以获得支持。 – 2012-02-23 12:04:08

+0

这是一个C++库。我会很感激你的想法。 – AFP 2012-02-23 17:22:58

回答

0

你必须给可能的错误消息(第一)的一些细节。

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

如果用winsock的库
  • ,检查这是首次列入等(著名WINSOCK.H VS winsock2.h)

  • 检查平台工具集(在你的情况它应该可能是v80)

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