静态库链接、c++、VS Express 2013

Posted

技术标签:

【中文标题】静态库链接、c++、VS Express 2013【英文标题】:Static lib links, c++, VS Express 2013 【发布时间】:2014-06-06 00:33:16 【问题描述】:

好的,所以我用 c++ 制作了一个小型多线程程序,当我在一台机器上编译它时它工作正常,但是当我尝试在另一台机器上运行它时,它显示“缺少 msvcp123D.dll”。 我环顾论坛,发现了一些关于这个的好信息。解决方案是创建指向所需库的静态链接。 项目属性 -> 常规 -> 在静态库中使用 MFC 项目属性 -> 输入 -> 附加依赖项 -> ?现在我想问一下我需要在这里添加什么库才能使其在 Windows 7、8、8.1 机器上工作

感谢大家的宝贵时间。

【问题讨论】:

让它自成一体:***.com/questions/5214403/… 在调试中构建时,有些文件不会在没有安装 VS 的计算机上。 如果你链接 everything 静态(调试或发布),将没有额外的库要求。如果您没有使用特定于 Metro 的功能,那么您的完全静态链接的想象应该可以独立运行,而不会在这些操作系统中的 任何一个 上出现问题。 @paulm 已经确定了最初的问题,顺便说一句。这个答案值得一看。 Deduplicator 我点击了那个链接,它导致我遇到了上述问题。 【参考方案1】:

msvcp123D.dll 是 DEBUG 运行时。构建发布版本并在目标机器上安装 VC2013 redists 以消除此错误。

或者,您可以静态链接运行时,在这种情况下,您只需要自己的二进制文件(即使它是调试版本)。

编辑:要静态链接运行时,请右键单击 vcxproj 文件并转到属性,然后在 C/C++ 代码生成下将“多线程发布/调试 DLL”更改为“多线程发布/调试”。名称中不带“dll”的选项是静态版本。

【讨论】:

“或者,您可以静态链接运行时,在这种情况下,您只需要自己的二进制文件(即使它是调试版本)。” 如果您能提供一些更详细的说明,我将不胜感激,因为我不是专家,并且一直在网上四处游荡,试图弄清楚这一点。 已更新,尽管我建议只安装 VCRedists + 发布版本。您不希望提供调试版本。 如果有人遇到同样的问题,这个解决方案对我有用: 编辑:要静态链接运行时,请右键单击 vcxproj 文件并转到属性,然后在 C/C++ 代码生成下将“多线程发布/调试 DLL”更改为“多线程发布/调试”。名称中不带“dll”的选项是静态版本。

以上是关于静态库链接、c++、VS Express 2013的主要内容,如果未能解决你的问题,请参考以下文章

链接静态库 Vs。 Linux 中的共享库

VS2013下静态链接库(lib)和动态链接库(dll)的生成与使用

VS c++调用第三方库

求问vs2013怎么添加静态库,试了两种方法都有问题

求问vs2013怎么添加静态库,试了两种方法都有问题

VS2019 C++动态链接库的创建使用