草庐IT

c++ - CMake add_library(<lib> OBJECT <src>) 有环境变量吗?

CMake是2.8.8在编译时引入了OBJECT库类型:add_library(OBJECT)。这是一个有用的构造,能够将所有类编译为.o文件,但还没有将它们添加到库中。但是,我不确定它最终附加到生成的make文件中的命令的标志是什么。基本上,在执行add_library(SHARED)命令时,它会添加CMAKE_SHARED_LIBRARY_CXX_FLAGS指定的任何标志。我希望能够只为OBJECT库指定构建标志,而不必求助于更全局的标志,例如CMAKE_CXX_FLAGS_DEBUG和CMAKE_CXX_FLAGS_RELEASE。如果存在或计划这样的标志,有人知道吗?回顾:#h

c++ - 从 MinGW .a 转换为 VC++ .lib

我有一个旧库(用C++编写),我只能在Windows上的MinGW+MSYS32上构建它。由此我可以生成一个从GNUlibtool生成的.a静态库文件。我的主要开发是在VisualStudio2008中完成的。如果我尝试使用MinGW生成的库并将其链接到VisualStudio中,它会提示缺少外部组件。这很可能是由于已完成的C++符号重整,并且它与.a文件中的内容不匹配。有什么已知的方法可以将静态.a文件转换为VC++库格式吗? 最佳答案 如果符号被不同地破坏,编译器正在使用不同的ABI,你将无法“转换”或任何编译的库:名称以不同方

c++ - 分析 DLL/LIB 膨胀

我在VS2005中继承了一个相当大的C++项目,它编译成一个大约5MB的DLL。我想缩减库的大小,以便从慢速网络共享中使用它的客户端可以更快地通过网络加载它。我知道如何通过分析代码、包含和项目设置来做到这一点,但我想知道是否有可用的工具可以更轻松地查明代码的哪些部分占用的空间最多。有没有办法生成DLL布局的“配置文件”?关于库图像中什么正在消耗空间以及占用多少空间的报告? 最佳答案 构建DLL时,可以传递/MAP给链接器让它生成一个映射文件,其中包含结果图像中所有符号的地址。您可能需要编写一些脚本来计算每个符号的大小。使用"stri

c++ - 为什么 boost 寻找 libboost_*.lib 而不是 boost_*.lib?

我使用标记布局编译了boost库,因此我有boost_program_options-mt.lib形式的库文件。我假设问题是boost_auto_link之类的。我有预处理器定义BOOST_AUTO_LINK_TAGGED,尽管我仍然收到错误消息说VisualStudio正在寻找libboost版本并且无法打开文件。ErrorLNK1104cannotopenfile'libboost_program_options-mt.lib'我该如何解决这个问题才能正确链接到库?UPDATE:Forsomereason,whenIlaunchmyprogram,Igetanerrorsaying

c++ - boost lib 中的语句,(void)p;这是什么意思?

我在Boost库中看到了以下一段用于offset_ptr的代码。在boost/interprocess/offset_ptr.hpp下typedefPointedType*pointer;...//!Constructorfromotherpointer.//!Neverthrows.templateoffset_ptr(T*ptr){pointerp(ptr);(void)p;this->set_offset(p);}我想知道语句(void)p;是什么意思?是吗? 最佳答案 找出答案的一种方法是在该行代码上打一个断点,然后单步执行

c++ - 如何隔离只允许创建为单例的不良行为 3rd-party c-lib?

目前我正在开发一个原生Cnodejs插件来包装一个3rdparty闭源c-lib并将其暴露给nodejs。到目前为止一切顺利。我的解决方案有效,并且可以调用和使用native代码。当随后调用这些函数时,会出现一个问题。3rdParty库似乎总是为其运行时对象分配相同的结构(?;说:内存中的相同位置)。我能以某种方式“沙盒化”这个3rdparty-lib吗?有解决这个问题的模式吗?可能特定于nodejs-addon开发,因为nodejs是单线程、单进程应用程序。在这种情况下,一般建议似乎在单独的进程中运行3rdParty库,例如此处所述:Isolatingandmultiplyinsta

c++ - Cmake,在/usr/local/include 中找到头文件,在/usr/local/lib 中找到库

我希望CMake找到add_executable的header并找到target_link_libraries的.so文件。我要找的头文件是lcm-cpp.hpp(在ubunthu上)ls/usr/local/include/lcm/eventlog.hlcm_coretypes.hlcm-cpp.hpplcm-cpp-impl.hpplcm.h我项目根目录下的CMakeLists.txt文件cmake_minimum_required(VERSION2.6)project(libFoo)include_directories(include/usr/local/include/lcm

c++ - 如何链接到 Visual C++ 2010 中的 .lib 文件?没有引用项目?

我只是有一个问题,我已经尝试解决了最长时间。我在VisualC++中有一个静态库项目,我希望另一个项目能够链接到它。到目前为止,我一直只是添加对静态库项目的引用,它会自动链接库。我希望能够仅使用头文件和.lib文件链接到库。但是,我收到“未解析的外部符号”错误。我认为我做对了-我指定了包含目录、库目录,然后进入链接器输入属性并将库作为附加依赖项提供。我可以通过这种方式引用其他静态库(如SDL),那么为什么我在尝试引用我的静态库时会出错?感谢您的帮助。问题是它没有引用实际的lib文件,还是lib本身有问题?这些是我收到的错误消息:错误2errorLNK2019:未解析的外部符号“publ

c++ - 链接 : fatal error LNK1104: cannot open file 'libcpmt.lib' after manually configuring the LIB environmental variable

我正在尝试从命令行使用clVisualStudio2010编译器。由于某些原因,我安装的VisualStudio2010无法正确配置INCLUDE和LIB目录,请参阅YetanotherpostonfatalerrorC1034:noincludepathset.如果我跑`vcvars32.bat`我收到以下错误消息:ERROR:CannotdeterminethelocationoftheVSCommonToolsfolder.然后我尝试手动设置这些环境变量。所以我创建了一个简单的bat文件,如下所示:SetINCLUDE="C:\ProgramFiles(x86)\Microsof

c++ - C++ 算法/Boost Lib 是否有基数排序?

我想对整数进行排序,我知道基数排序应该非常棒。有任何库实现这种类型吗? 最佳答案 取决于您定义基数排序的严格程度,因为Boost1.58.0包括Spreadsort,这是一种混合排序算法,它启发式地混合了桶排序和比较排序。对于排序整数并且不需要最坏情况下的Θ(n)效率,Spreadsort应该可以满足您。为了论证,你也可以看看我对LSDradixsort的实现。,这在内存方面效率很低,但有时比Spreadsort更快。您只需要radix_sort分支,但我已链接到speed_test分支,因为它有自述文件。