加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

依赖关系 – Visual Studio 2012与静态库链接错误

发布时间:2020-12-14 00:48:32 所属栏目:百科 来源:网络整理
导读:我最近从2005年升级到2012年(我很确定),在构建我的解决方案时遇到链接错误. google搜索几个小时后我就想出来了.我已经建立了几十个项目,所以我很确定我已经做了一切正确的事情,但公平的说,已经有几年了. 所以,作为一个测试,我设立了一个新的项目.我把它叫做A
我最近从2005年升级到2012年(我很确定),在构建我的解决方案时遇到链接错误. google搜索几个小时后我就想出来了.我已经建立了几十个项目,所以我很确定我已经做了一切正确的事情,但公平的说,已经有几年了.

所以,作为一个测试,我设立了一个新的项目.我把它叫做App,一个Windows应用程序(.exe).我创建了一个名为Core的第二个项目,并将其标记为其配置类型中的静态库(.lib).两者都是解决方案的一部分.在Core中,我添加了Test.cpp和Test.h,它包含一个具有简单功能的小类.然后,在Window的应用程序WinMain.cpp文件中,我有WinMain(),我通过CTest测试调用这个测试类;测试结果();

与此同时,我将项目应用程序的项目依赖项设置为核心,最后添加到App的“附加包含”目录中,以便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:WorkTest_Linker_StupidityAppDebugApp.exe : fatal error LNK1120: 3 unresolved externals
========== Build: 0 succeeded,1 failed,1 up-to-date,0 skipped ========
Visual Studio 2005对项目依赖性做了一些魔术,它会自动链接到任何.lib输出(我不幸的是开发人员帮助实现它).这似乎已被删除,因为我怀疑Visual Studio 2010当旧的Visual C构建系统被替换为MSBuild.

但是,静态库依赖关系的自动链接功能仍可通过项目引用找到:

右键点击应用程序项目并选择“引用…”
>点击“添加新参考”.
>检查静态库项目,然后按OK.
>建立.

您现在应该看到自动链接的静态库.请注意,项目引用也意味着项目依赖.

如果您更喜欢使用项目依赖关系,则需要将静态库添加到“App”项目中的链接器附加依赖项属性,就像您对任何其他静态库输入一样.

编辑:也可以在项目参考中看到一个名为“Link Library Dependencies”的属性.这将控制引用项目的.lib输出是否链接到(默认为true).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读