- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
即使已经在网上搜索了大量相关信息,我仍然无法理解 boost lib 文件。我安装了 Boost 1.51 并且 lib 文件夹是 1.7GB,这太多了。我需要减少它。
举个例子: http://i.imgur.com/6nXfVEr.png
这是所有正则表达式库文件夹。有10个!我想删除其中的大部分,但我很难理解我需要哪些文件夹。
我假设“libboost”是静态库(不需要 DLL),而其他库是动态的。这是否意味着如果我使用动态库,我需要在我的项目中使用 boost DLL?
我还可以看到有些是调试的,有些不是。有必要两者都保留吗?还是我可以一直为我的项目使用非调试版本?
最后,我的想法是否正确,让 Visual Studio 选择特定的库,我去:C/C++ project settings -> Code Generation -> Runtime Library
,并在/MT、/MD等之间切换?如果我使用多线程 (/MT),这是否意味着我可以删除所有调试库和 dll,因为此选项仅使用静态库?
感谢您的任何建议。
最佳答案
I assume 'libboost' is the static lib (which doesn't require a DLL) and the others are dynamic which do.
是的。
Does it mean if I use the dynamic libraries I need boost DLLs in my project?
是的。
Finally, am I right in thinking, to make Visual Studio choose specific libs I go to the: C/C++ project settings -> Code Generation -> Runtime Library, and change between /MT, /MD, etc?
不尽然。设置/MT 或任何其他类似选项只会使您的应用程序使用相应版本的运行时库(例如 CRT)。这并不意味着您只能在此之后进行静态链接,它也不会为您自己的项目特定依赖项“选择”任何内容。
是否将 boost 作为静态库或 DLL 链接取决于您在以下位置指定的 .lib 文件(libboostXXX 或 boostXXX):Linker -> Input -> Additional Dependencies。此外,您可能需要访问 Linker -> General -> Additional Library Directories 并添加一个路径到您的 boost/libs 文件夹(可能还有它的子文件夹),这样您就不必指定完整路径对于您要添加到依赖项的每个库。
但是,您应该始终(尤其是在使用静态库时)链接到使用您在主项目中选择的相同运行时构建的库。如果您尝试混合不同的运行时,您很可能会遇到关于双重定义符号(在系统库中)等的非常神秘的链接器错误。在最坏的情况下(通常是由于一些不太明显的设置不匹配,例如更改 STL 选项的预处理器定义)它不会导致链接器失败,但会导致神秘的运行时崩溃。然而,Visual Studio 2010 及更高版本在检测此类不匹配方面做得非常好(与以前的 VS 版本相比)。
另一个问题可能是某些 boost header 使用 #pragma comment 强制按特定名称链接必要的库。如果您发现这是一个问题并且想要手动指定您的依赖项(或者如果它选择了您并不真正需要链接到的内容),您可以添加一个全局预处理器定义 BOOST_ALL_NO_LIB 到 C/C++ -> 预处理器 -> 预处理器定义。
此外,您真的需要项目中的所有 boost 库吗?它们有很多,而且大多数都是为了非常特别的东西。根据我的经验,人们通常只需要一小部分 boost 来实现他们的特定项目目标。要创建这样一个子集,仅包含您真正使用的库及其依赖项的 header ,您可以使用 BCP utility .这可能会大大减少您的 boost/boost 文件夹。当然,您也可以删除不打算使用的库的二进制文件。另请注意,boost 中的大多数通用库都是仅包含 header 的,因此根本不需要链接到任何库。
关于c++ - 减少我的 boost lib 文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16963796/
根据 g++ -print-search-dirs,我的 C++ 编译器正在许多目录中搜索库,包括 ... /lib/../lib/: /usr/lib/../lib/: /库/: /usr/lib/
我在 GLUT 演示的顶部看到了代码,我很好奇它的功能。 为什么有人要编写#pragma 而不是只包含库? 最佳答案 此 pragma 允许库作者根据一系列可在编译时分析的标准定义库导入。例如,您可以
Intel describes libm.lib 作为静态库,libmmt.lib 作为多线程静态库 (/MT) 和 libmmds.lib 作为多线程静态库 (/MD) 都实现了 LibM Math
我在 Windows 7 32 位上使用 Visual Studio 2010。 我在 http://www.directxtutorial.com/Lesson.aspx?lessonid=9-4-
我正在尝试将一些 html 转换为 pdf。经过一些谷歌搜索后,我发现 dompdf但是当我尝试转换时,我会检索 PHP-font-lib must either be installed via c
目前我的visual studio基本上是在生成Engine.dll和Game.exe Engine.dll 链接到其他一些基本库,例如:d3dx9d.libComCtl32.libWinMM.lib
我正在尝试将 material-ui 用于项目。使用它时会抛出以下错误: 我曾尝试通过 github 存储库解决类似问题,但没有任何运气。任何人都有任何想法可能是什么问题?我正在添加 package.
为了简化,我有两个库:libA.lib、libB.lib libA 具有以下功能: void read(num,*val){ *val=Globalval[num]; ... } libB: void
我有一个包含两个项目的 VS2010 解决方案。第一个项目 [DevLib] 是一个库,它基本上是另一个我们没有源代码的库 [ExtLib] 的包装器。构建这个库工作正常。 第二个项目 [TestAp
我想用我做了一些小更改的系统库替换它。这两个库都是使用相同版本的cyanogenmod 源代码编译的。我复制到 SD 卡的那个可以在早期的 CM 闪存上运行。 现在我尝试运行以下命令: $ adb s
我正在使用源代码中的Postgres 13(Rel_13_STRATE分支),并且我使用的是来自apachea/age源代码的(Release/PG13/1.3.0分支)中的1.3.0版的Apache
看起来 Jetty 团队想要在版本 6 和 7 之间进行一些 Spring 清理,并且看起来好像一个有用的系统属性“jetty.lib”不存在、不起作用,或者只是在未指定的情况下发生了更改以便使我的
我正在尝试使用 unixODBC 连接到 Oracle,但它不起作用。到目前为止,我已经尝试关注 How do I setup Oracle ODBC drivers on RHEL 6/Linux
我在我的 Linux Mint 14 Nadia 中安装了 Matlab(a uname -a 显示:Linux Ideapad-Z570 3.5.0-17-generic#28-Ubuntu SMP
我有一个需要使用 macdeployqt 设置的应用程序,但是当我调用它时,它告诉我它无法在/usr/lib/目录中找到一些库。 在调用 macdeployqt 之前,我必须将 3 个库 (.tx)
此特定问题是由于指定对路径中包含空格的 lib 文件的依赖项引起的。路径需要用引号括起来,项目才能正确编译。 在项目属性的Configuration Properties -> Linker -> I
我正在努力尝试让 OpenCV 2.2 库与我的项目(运行 VSC++,2010)一起工作。我按照 http://opencv.willowgarage.com/wiki/VisualC%2B%2B
总而言之,我想要的是避免在多个 .dll 中出现重复的 .lib 文件,因为生成的 .dll 将在一个 .exe 文件中一起使用,这会使 .lib 文件中的全局状态重复。 具体问题: 我有一个包含 3
我正在尝试使用 Intel TBB 和 IPP 构建 OpenCV v2.3.1。我使用 CMake 生成 Visual Studio 2010 解决方案。构建成功,我在输出中有 opencv_cor
我不明白 use local::lib 经常做 use lib 没有。有人可以解释一下吗? 最佳答案 常规 use lib foo几乎就像这样简单: BEGIN { unshift(@INC, foo
我是一名优秀的程序员,十分优秀!