gpt4 book ai didi

c++ - 将库与 NuGet 包链接为 Visual Studio 中的依赖项

转载 作者:搜寻专家 更新时间:2023-10-31 02:12:56 25 4
gpt4 key购买 nike

我有一个包含 main.cpp 的控制台项目 LinkExample

#include <Library/Logger.hpp>
int main()
{
WriteSomething();
return 0;
}

LinkExample 链接一个名为Library 的静态库项目。 Library.Lib 链接正确。

库包含一个 Logger.hpp

#pragma once
void WriteSomething();

Logger.cpp

#include <boost/log/trivial.hpp>
#include <Library/Logger.hpp>

void WriteSomething()
{
BOOST_LOG_TRIVIAL(trace) << "Trace";
}

NuGet 包是:

  <?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="boost" version="1.63.0.0" targetFramework="native" />
<package id="boost_log-vc140" version="1.63.0.0" targetFramework="native" />
</packages>

LinkExample 未构建并显示文件 libboost_log-vc140-mt-gd-1_63.lib 的错误 LNK1104。

静态链接时,我希望将此库烘焙到 Library 中,为什么这没有发生,我该如何解决?

我知道我可以将包添加到 LinkExample 但这不是一个长期的解决方案。

在解决方案运行之前添加包将包括这些包。

<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="boost" version="1.63.0.0" targetFramework="native" />
<package id="boost_date_time-vc140" version="1.63.0.0" targetFramework="native" />
<package id="boost_filesystem-vc140" version="1.63.0.0" targetFramework="native" />
<package id="boost_log-vc140" version="1.63.0.0" targetFramework="native" />
<package id="boost_system-vc140" version="1.63.0.0" targetFramework="native" />
<package id="boost_thread-vc140" version="1.63.0.0" targetFramework="native" />
</packages>

在一个更大的项目中,在将 boost 切换为动态链接后,这种方法开始分崩离析。

我如何摆脱 lib 文件被我的客户库链接的根本问题?

请注意,“链接库依赖项”设置在这里没有任何作用,使用此设置需要与 NuGet 不兼容的项目设置。

最佳答案

这是 Visual Studio 的默认行为。我们无法在链接客户库提供的 LinkExample 项目中直接使用 NuGet 包作为依赖项。 Visual Studio 在我们构建 LinkExample 项目时只加载静态库项目的文件,不会加载静态库项目的那些依赖项。所以我同意 Jeroen Heier 的观点,如果你想将这些包用于 LinkExample 项目,你需要将包添加到 LinkExample。

关于c++ - 将库与 NuGet 包链接为 Visual Studio 中的依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42043915/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com