c++ - 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的全部意义吗?
解决方案
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
推荐阅读
- mysql - MySQL:如何优化字段 SUM 的结果?
- c# - Microsoft.JSInterop.JSException:当前没有元素与组件关联
- python - 如何打印python品脱数量及其含义
- google-sheets - 如何从 Google 表格的下拉菜单中交替查询
- java - 是否有访问 recyclerView 中第一项的解决方案
- android - 在发布模式下颤振构建 appbundle
- android - 关闭gps时粉碎
- c - 如何将字符串和浮点数从文件存储到结构?
- amazon-web-services - 通过 Terraform 生成的 SQS FIFO 队列的消息停留在 In-Flight 状态
- javascript - Promise.all() 与使用 await 的动态大小的请求数组