首页 > 解决方案 > VS 2017 C++ 静态库编译与 /MD 项目依赖问题

问题描述

我是一个 unix 后端开发人员,在维护一个 Visual Studio 项目方面做得很小。我的绝大多数代码都在 Linux 上运行,只占用很小的 Windows 空间。这里有一个专有的项目特定规则,规定所有系统依赖项必须动态链接,但系统上尚未安装的所有其他依赖项(幸好我无法控制)必须是静态的。换句话说,我可以使用 boost、poco、mysql++、zeromq 等,但必须静态链接。我也无法创建自己的 DLL。我的 Linux 大脑猜测该规则是我的 Windows 问题。

我有一个大型静态库作为项目的一部分,其中有许多链接到其他程序的通用代码。该静态库编译为 /MD,这似乎是我在 Windows 上必须做的以动态链接系统库。但是,我需要将该库静态链接到其他程序。当我将 VS 2017 中的库引用添加到其他项目时,什么也没有发生,符号也没有解析,并且出现很多链接错误。为了解决这个问题,我通过 Linker->Input->Additional Dependencies 将我的库硬编码到各种其他项目中,并且在一段时间后“工作”,代码链接并运行,但 VS 不解决静态库依赖项。虽然我可以继续使用这个解决方案,但这并不理想。重新构建解决方案总是会导致失败(或将旧代码链接到新构建中),因为大型静态库总是花费最长的时间,并且没有其他项目知道等待该构建完成。解决方法是先构建静态库,然后构建整个项目。

有没有更精通 Visual Studio 的人知道最好的方法?

有人可以帮我理解为什么这被否决了吗?这不是一个巨魔,我也不是一个试图让别人做作业的学生,​​这是一个我试图在专业环境中解决的真正问题。我认为这就是stackoverflow的全部意义吗?

标签: c++visual-studio

解决方案


So this was something simple. When I went to add the reference I didn't actually click on the check box. Robert Andrzejuk's second comment helped, I had read that before but didn't notice the little check box the first time.

On the add a reference page (right click project in solution browser, Add->References...), the check box next to the item has to be selected. Add reference widget


推荐阅读