草庐IT

c++ - 链接的可执行文件中缺少静态库中的符号

我遇到链接可执行文件中遗漏静态库符号的问题。这是我的问题的描述:我有从几个目标文件构建的静态库。这些目标文件提供了几个符号组,与:一组C函数和结构(几个目标文件)。我们称相应的符号为level1符号。一组用于此C函数和结构的C++包装器类(另一个目标文件)。我们称相应的符号为level2符号。一组从具有扩展功能的级别2类(另一个目标文件)继承的C++包装类。我们称相应的符号为level3符号。UndegroundC代码使用其他几个项目和外部库。其中一些是静态的,所以目前这个库也是静态的。库链接到可执行文件。该文件仅直接使用lib中的level2符号。但是这个可执行文件在执行过程中加载的

c++ - re2 库加载

我正在使用以下代码来测试谷歌的RE2库intmain(){intr=RE2::FullMatch("hello","h.*o");cout我正在使用以下命令进行编译-g++-lre2-oretestretest.cc编译正常,但是当我尝试使用./retest运行重新测试时,它会抛出以下错误-errorwhileloadingsharedlibraries:libre2.so.0:cannotopensharedobjectfile:Nosuchfileordirectory我已经检查过,libre2.so.0库确实存在于user/local/lib目录和re2/obj/so目录中。那么

c++ - 如何在 C++ xcode 项目中使用动态共享库?

我在XCode中创建了一个新项目(使用模板“STLC++库”),并制作了一个打印到控制台的小测试函数voidhello();。它编译得很好,我可以导出一个dylib文件。我想不通的是如何创建一个项目,然后链接到这个文件并可以调用hello()方法。如有任何建议,我们将不胜感激。亚历克斯。 最佳答案 创建另一个Xcode项目,例如应用程序项目。在您的示例中,您可以创建一个使用C++的命令行工具项目。创建项目后,将dylib添加到目标的LinkBinarywithLibraries构建阶段。在Xcode4中,从项目导航器中选择项目以打开

c++ - 使用单独的 Boost 库编译,无需安装 Boost

我正在实现一些C++代码,我希望这些代码尽可能具有可移植性。我想避免依赖需要root权限才能安装的库。此外,我更愿意避免在我的存储库中保留大型库的拷贝,我也不希望对库进行用户级安装(仅仅是因为我必须在多台计算机上手动安装它们。)我想使用normal_distributionBoost在我的项目中的功能。我知道安装Boost的典型方法需要sudoapt-get或sudoyum命令类型,但我在运行此代码的系统上没有root访问权限。为了解决这个问题,我想知道我是否可以简单地放置一份Boost的normal_distribution.cpp和normal_distribution.hpp在我

c++ - 确定动态库是否存在的多平台方法

我需要检查是否存在动态库,以便以后可以安全地调用使用该库的函数。有没有多平台的方法来检查这个?我的目标是MSWindows7(VC++11)和Linux(g++)。 最佳答案 要动态“使用”共享库中的函数,要求该库不是可执行文件的一部分,因此您需要编写代码来加载该库,然后使用该函数。很可能有多种方法可以以便携的方式做到这一点,但我不知道有任何代码可以做到这一点。这不是很难编写的代码。作为“步骤”,它涉及以下内容:在给定文件名的情况下加载库(例如“xx”,然后在体系结构特定代码中将其翻译为“xx.so”或“xx.dll”)。根据索引(

c++ - GCC/LD找不到链接库

操作系统:Windows7Enterprisex64集成开发环境:EclipseJuno/CDT编译器:MinGW4.6.2(C:\MinGW)赞user697111,我无法让ld.exe找到外部库。简单的程序可以正常编译和链接,但是当我尝试使用提供的库添加SQL功能时,我在Eclipse中收到此错误消息:“c:/mingw/bin/../lib/gcc/mingw32/4.6.2/../../../../mingw32/bin/ld.exe:找不到-lC:\MinGW\lib\libodbc32.a"。我指定C:\MinGW\lib作为项目库路径。我将C:\MinGW\lib\lib

c++ - 在 Visual Studio 2013 中找不到 C++ ATL 库(atl.lib 和 atl120.dll)

我有一个使用ATL库的C++项目。在VisualStudio2012中,我曾经看到过以下两个文件:程序文件(x86)\MicrosoftVisualStudio11.0\VC\atlmfc\lib\Atl.lib程序文件(x86)\MicrosoftVisualStudio11.0\VC\redist\x86\Microsoft.VC110.ATL\atl110.dllVisualStudio2013安装时找不到对应的Lib和DLL文件。哪里可以找到VS2013的对应文件? 最佳答案 在VisualStudio2013中,ATLDL

访问boost绑定(bind)时共享库中的C++符号查找错误

我正在尝试将多线程添加到我的库中,因此我正在为我的库创建一个线程执行器。为此,我使用了增强线程。这是我在运行链接到库的测试用例时遇到的错误:symbollookuperror:libmylibexample.so.0:undefinedsymbol:_ZTVN5boost6detail16thread_data_baseE这是导致错误的共享库中的代码行:MyNameSpace::Producerproducer=MyNameSpace::Producer();threads.create_thread(boost::bind(&MyNameSpace::Producer::run,&p

c++ - 跨动态库的静态*模板*类成员

编辑:已接受答案下方的评论表明这可能是Android动态加载器的问题。我有一个带有静态成员的模板类的header。在运行时,静态成员的地址在库和客户端代码中使用。该模板在库和客户端代码中都被隐式实例化。它在Linux和OSX上运行良好,符号重复但标记为“唯一”,如nm所示(见下文)。但是,当我为ARM(Android)编译时,该符号在DSO和可执行文件中都被标记为weak。加载程序不统一,符号在运行时有效复制!我读了这些:twoinstancesofastaticmember,howcouldthatbe?Statictemplatedatamembersstorage尤其是这个答案:

c++ - 如何使用自定义库的 boost 库进行性能测试

我需要对用C++编写的库进行性能测试。该库由几组结构组成。我已经对这些类进行了序列化测试,但不确定如何对这些类进行性能测试。下面是库中结构的示例structX{public:intp;doubleq;X();~X();}structY{floatm;doublen;Y();~Y();}structZ{public:std::map>Xtype;std::map>Ytype;inti;stringname;Z();~Z();}如果提供任何示例,那将是非常好的。 最佳答案 好的,所以我为类型添加了序列化(你为什么不加它?)structX