gpt4 book ai didi

c++ - 如何选择要链接的 Poco 库版本?

转载 作者:太空宇宙 更新时间:2023-11-04 11:31:20 24 4
gpt4 key购买 nike

我已经对此进行了大量试验和搜索。 StackOverflow 响应 How to add Poco library in Visual Studio 2010?一个很接近但不能完全解决我的问题。

具体来说,我正在尝试构建一个不依赖于 Poco DLL 来运行的应用程序。当存在 DLL 时,应用程序运行良好。

在 Poco 的 lib 目录中,为本质上相同的库的许多版本提供了库,例如,CppUnit.lib、CppUnitd.lib、CppUnitmd.lib、CppUnitmdd.lib、CppUnitmt。库和 CppUnitmtd.lib。

据我了解,lib 文件的“...mt”版本允许应用程序以整体方式构建,而无需在运行时存在 Poco DLL。 (这是正确的吗?)

我正在使用 MS Visual Studio 2010,并试图鼓励链接器使用每个 Poco 库的“...mt”版本(...调试版本的 mtd 版本。)

所有 Poco 库都在同一目录中。我已将该目录路径添加到 Preferences>Project>Linker>General>Additional Library Directories,并且我已将 CppUnitmt.lib;PocoFoundationmt.lib;PocoNetmt.lib 明确添加到 Preferences>Project>Linker>Input >其他依赖项。

链接似乎没有问题;构建成功。然而,当我运行我的应用程序时,我收到一条警告:“应用程序无法启动,因为您的计算机缺少 PocoFoundation.dll。尝试重新安装程序以解决此问题。

总而言之,我的问题是:是否可以构建一个不需要访问 Poco DLL 的 Poco 应用程序,如果是这样,我如何告诉 VS 2010 链接器这样做?

最佳答案

我从未使用过 Poco,因此根据我自己对 VS 的一般经验(因为链接器设置使用具有相似名称的标志)以及其他项目,请考虑以下假设。

您误解了文件名中的“扩展名”。

那些表示已用于构建库的 MSVC 运行时类型(因为它通常应该与您自己的项目匹配,否则可能会发生非常非常糟糕的事情):

  • CppUnit.lib:这很可能是静态版本(它比其他非调试库大吗?)。如果您使用这个,则不必使用 DLL 文件。
  • CppUnitd.lib:这很可能是静态调试版本。
  • CppUnitmt:这是使用多线程运行时的库(即不需要安装 MSVC 运行时文件)。
  • CppUnitmtd:这个使用多线程调试运行时。
  • CppUnitmd:这个使用多线程动态运行时(因此是“d”)。
  • CppUnitmdd:这个使用多线程动态调试运行时。

关于c++ - 如何选择要链接的 Poco 库版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24656723/

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