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

标签 c++ visual-studio-2010 dll linker poco

我已经对此进行了大量试验和搜索。 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/

相关文章:

c# - Visual Studio C++ 和 C# 的键盘快捷键

c# - .net 4.5中不存在使用System.Json的情况

c# - 在 Windows 8(C++ 或 .NET/C#)中的 WinRT 上动态执行代码?

c++ - 如何将/baseaddress 设置为 "good"值?

C++:将 cin 分配给 ifstream 变量?

visual-studio-2010 - 将菜单按钮添加到 VS2010 TFS 查询结果或工作项栏

c++ - C 中存在大量空变量,总大小超过内存

visual-studio-2010 - 在 Visual Studio 中查找一行中*以任意顺序*的单词?

c++ - 将逗号运算符与条件运算符一起使用

c++ - 如何直接评估一个函数?