【问题标题】:How to link against third-party libraries (.lib) in Team Services build of GitHub repo?如何在 GitHub 存储库的 Team Services 构建中链接第三方库 (.lib)?
【发布时间】:2016-08-01 07:36:12
【问题描述】:

在源代码管理中添加库并将正确的路径添加到 Visual Studio 解决方案绝对没有任何作用。我本地项目编译正常,但是在线CI编译每次都失败。

LINK(0,0): Error LNK1104: cannot open file 'xxx.lib'

此时我已经尝试了在 VS2015 中工作的相对路径和设置的任何可能组合。文档真的很稀缺,我只能找到一些关于 TFS 项目文件的模棱两可的建议(我没有,因为 repo 是远程 GitHub repo)和工作区(我不知道如何设置) )。我也知道这个“NuGet”包的事情,但我宁愿不必为目录中已有的几个库文件构建一个完整的专用包。

我不敢相信真的没有一个简单的设置来包含第三方 SDK。即使在源代码控制中包含库也是不好的做法,所以我可能在这里错过了一些相当大的东西。有什么建议吗?

【问题讨论】:

  • 你把lib文件放在哪里了?我将 lib 文件放在项目文件夹中并将其添加到源代码管理中。构建可以成功完成。
  • lib 文件不在根目录下,它与其他库和文件的其他版本(MD、MT 等)一起在项目文件夹内自己的一组文件夹中
  • 添加到版本控制后是否保持相同的相对路径?如果是,您应该不需要更新解决方案文件。
  • 是的,我已经在 VS2015 中添加了 VC++ 目录的相对路径,并且在 repo 中保留了相同的文件夹结构。我需要在其他任何地方进行设置吗?编辑:对不起,我之前的意思是“在解决方案文件夹内”,而不是(子)项目文件夹,如果有任何区别的话。
  • 我在回答中添加了可以成功构建的文件夹结构,以便您查看。

标签: c++ visual-studio github azure-devops


【解决方案1】:

以下是我在本地和 VSTS 中的文件夹结构:

在我的本地机器中,lib 文件放在“MyCon”项目文件夹下的“test”文件夹中:

添加到源代码管理后的文件夹结构几乎相同:

链接器中的路径:

lib 文件在解决方案文件夹中时的设置:

【讨论】:

  • 这是我的问题:我没有任何 repo on VSTS,它都在 GitHub 上。我不想同时管理两个源代码控制,Visual Studio 解决方案编译得很好,我只想将 VSTS 用作 GitHub 上的 CI 集成。
  • @Banderi GitHub 存储库是相同的。您只需要确保文件夹结构一致即可。
  • 在这种情况下,我会尝试将库文件夹从解决方案根目录移动到项目根目录,看看是否有效。
  • @Banderi 我添加了解决方案文件夹的屏幕截图。
  • 我仔细检查了源代码控制结构,似乎 lib 文件被 git 忽略了,以为文件夹实际上在那里,是空的。现在一切顺利。
猜你喜欢
  • 2016-11-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多