与静态库的Visual Studio 2012链接错误(Visual Studio 2012 lin

2019-08-02 22:43发布

我最近升级到2012,从2005年(我敢肯定),建设我的解决方案时遇到了链接错误。 我搜索谷歌和putsing周围小时后跑出的想法。 我已经设置了数十个项目,所以我敢肯定我所做的一切都是正确的,但说句公道话,它已经有几年了。

所以,作为一个测试,我成立了一个新的项目。 我把它叫做应用程序,Windows应用程序(.exe文件)。 我创建了一个名为酷睿第二个项目,并标记它作为一个静态库(.LIB)在它的配置类型。 两者都是解决方案的一部分。 在酷睿i加Test.cpp的和Test.h包含在它具有简单功能的小班。 然后,窗口的应用程序WinMain.cpp文件中我的WinMain(),我打电话到通过CTEST测试这个测试类; 测试结果();

随着这个我已经设置了项目应用的项目依赖是核心,最终加入到应用程序的附加包含目录的路径,核心代码,其中Test.cpp的/的.h现场。

我得到以下链接错误,不能为我的生命找出原因。 有谁知道哪一步我可能已经错过了或从以前的版本在2012年发生了什么变化? 非常感谢你非常提前的帮助!

1>------ Build started: Project: App, Configuration: Debug Win32 ------
1>WinMain.obj : error LNK2019: unresolved external symbol "public: __thiscall CTest::CTest(void)" (??0CTest@@QAE@XZ) referenced in function _WinMain@16
1>WinMain.obj : error LNK2019: unresolved external symbol "public: __thiscall CTest::~CTest(void)" (??1CTest@@QAE@XZ) referenced in function _WinMain@16
1>WinMain.obj : error LNK2019: unresolved external symbol "public: int __thiscall CTest::Result(void)" (?Result@CTest@@QAEHXZ) referenced in function _WinMain@16
1>D:\Work\Test_Linker_Stupidity\App\Debug\App.exe : fatal error LNK1120: 3 unresolved externals
========== Build: 0 succeeded, 1 failed, 1 up-to-date, 0 skipped ========

Answer 1:

Visual Studio 2005中做了一些魔术项目依赖它会自动在任何的.lib输出链接(我很遗憾的是,帮助实现它的开发者)。 这似乎已被删除,因为我怀疑,Visual Studio 2010的时候,老的Visual C ++编译系统用的MSBuild取代。

不过,该功能“的静态库的依赖关系自动连接”仍然可以通过项目引用发现:

  • 右键单击应用项目,并选择“引用...”
  • 点击“添加新引用”。
  • 检查静态库项目,然后按OK。
  • 建立。

您现在应该看到静态库正在自动连接在一起。需要注意的是项目的引用也意味着一个项目的依赖。

如果你喜欢使用的一个项目,而不是依赖,你需要静态库添加到链接器的附加依赖属性的“应用”项目,就像使用任何其他静态库输入。

编辑:还有,你会看到一个名为“链接库相关性”的项目引用属性。 这控制引用的项目的输出.LIB是否被挂在或没有(默认为true)。



文章来源: Visual Studio 2012 link errors with static libraries