我的控制台项目LinkExample
包含main.cpp
。
#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>
在一个较大的项目中,在将提升切换为动态链接后,事情开始逐渐消失。
如何摆脱我的客户库链接lib文件的根本问题?
请注意&#34;链接库依赖关系&#34;设置在此处不执行任何操作,使用此设置将需要与NuGet不兼容的项目设置。
答案 0 :(得分:2)
这是Visual Studio的默认行为。我们无法直接在链接客户库提供的LinkExample项目中将NuGet包用作依赖项。 Visual Studio只在构建LinkExample项目时加载静态库项目的文件,不会加载静态库项目的依赖项。所以我同意Jeroen Heier,如果你想将这些包用于LinkExample项目,你需要将包添加到LinkExample。