草庐IT

符号化

全部标签

c++ - 在 macOS High Sierra 上使用 node-gyp 动态链接 wfdb 库时未加载符号

我正在尝试创建一个依赖于WFDB库(https://www.physionet.org/physiotools/wfdb.shtml)的动态库。我的C++代码如下所示:#include#include#include#includeextern"C"{#include}#include"./sample_wfdb.h"intadd(inta,intb){returna+b;}intread(){inti,nsig;WFDB_Siginfo*siarray;WFDB_Sample*v;nsig=isigopen("/data/100s",NULL,0);if(nsigsignal1,si

c++ - 链接器映射文件有时有损坏的符号,但并非总是如此

作为构建过程的一部分,我们会在编译可执行文件时生成一个映射文件。例如:g++-Wl,-Map,/tmp/foo.map-ofoofoo.cpp为了尝试从GCC4.3/4.4迁移到GCC4.9,我们设置了一个新的构建服务器。4.9构建服务器生成的映射文件没有损坏的符号名称。4.3/4.4构建服务器生成的map文件可以。例如,用4.3运行上面的代码,我在map文件中截取了这个:.plt0x00000000004007000x90/usr/lib64/gcc/x86_64-suse-linux/4.3/../../../../lib64/crt1.o0x0000000000400710_ZN

c++ - 如何使用 MinGW 将符号正确导出到 Windows DLL 中?

我正在尝试使用MinGW创建一个具有一个公开函数的C++库。我想我已经读够了tutorials,环顾互联网,但似乎没有任何效果,错误总是一样的。未定义的函数引用。这是库的头文件(findPoints.h):#ifndefFIND_POINTS_H#defineFIND_POINTS_H#ifdefBUILDING_FIND_POINTS_DLL#defineFIND_POINTS_DLL_PREFIX__declspec(dllexport)#else#defineFIND_POINTS_DLL_PREFIX__declspec(dllimport)#endif#ifdef__cplu

c++ - 重复符号链接(symbolic link)器错误(C++ 帮助)

我现在正在学习一些CSP(约束满足)理论,并且正在使用this解析XML文件的库。我将Xcode用作IDE。我的程序编译正常,但当它链接文件时,我收到XMLParser_libxml2.hh文件的重复符号错误。我的文件是这样分开的:包含上述XMLParser文件的类头文件包含类头文件的类实现文件包含类头文件的主文件重复符号出现在main.o和classfile.o中,但据我所知,我实际上并没有两次添加该.hh文件。完整错误:ld:duplicatesymbolboolCSPXMLParser::UTF8String::to,std::allocator>>(std::basic_str

c++ - GCC API 无法分解其自己的导出符号

我正在尝试使用GCC’sabi::__cxa_demangle分解从g++生成的目标文件中导出的符号.但是,我总是得到错误mangled_nameisnotavalidnameundertheC++ABImanglingrules下面是我调用该函数的方式:std::stringdemangled(std::stringconst&sym){std::unique_ptrname{abi::__cxa_demangle(sym.c_str(),nullptr,nullptr,nullptr),std::free};return{name.get()};}(省略了错误处理;它存在于comp

c++ - Qt 中不一致的 XML 符号

我正在使用Qt和C++来读/写XML文件。虽然我只使用Qt类,但有一个奇怪的行为。QDomDocumentdocument;QDomElementelement=document.createElement("QString");QDomTexttextNode=document.createTextNode("");//Emptystring.element.appendChild(textNode);有时XML文件中的结果是有时它是.有谁知道为什么会这样? 最佳答案 因为您没有提供MCVE,我写道:#include#includ

c++ - C++ 标准对带符号整数类型的最小值和最大值之间关系的保证是什么?

假设-LLONG_MAX是否安全?(否定LLONG_MAX)属于longlong范围?假设如果LLONG_MIN是否安全?然后LLONG_MIN==-LLONG_MAX-1?它是由标准保证的还是所有实际设备都提供LLONG_MIN==-LLONG_MAX-1或LLONG_MIN==-LLONG_MAX? 最佳答案 Isitsafetoassumethat-LLONG_MAX(negatedLLONG_MAX)belongstolonglongrange?IsitsafetoassumethatifLLONG_MINthenLLONG

c++ - 为什么 std::ssize 被强制为其带符号大小类型的最小大小?

在C++20中,std::ssize正在引入以获得通用代码容器的签名大小。(并解释了添加的原因here。)有点奇怪的是,那里给出的定义(结合common_type和ptrdiff_t)具有强制返回值是“ptrdiff_t的效果”>或容器的size()返回值的签名形式,以较大者为准。P1227R1间接为此提供了理由(“将60,000的大小变成-5,536的大小对于std::ssize()来说将是一场灾难”)。然而,在我看来,这是一种尝试“修复”该问题的奇怪方法。有意定义uint16_t大小且已知永远不会超过32,767个元素的容器仍将被迫使用比所需更大的类型。对于分别使用uint8_t大

c++ - 静态和共享库符号冲突?

我有一个项目正在使用FreeImage和openCV,目前我们正在使用这两者的jpeg支持(我正在努力解决这个问题,但现在它必须保留)。无论如何,FreeImage将libjpeg7.0编译到它的静态库中,并且openCV的highgui库将它作为共享库链接(在我的系统Ubuntu9上,我安装了libjpeg6.2)。它们链接到一个最终库,该库用于链接到各种程序、java包装器等。所有这些都工作正常,在编译/链接期间没有符号冲突或任何东西。但是,当我使用openCVcvLoadImage函数打开图像时,它会在读取标题时死掉,这很可能是由于6.2和7.0中标题之间的差异。如果我取消链接F

c++ - 发现符号用法

问题我最近发现自己在处理一个大型的、陌生的、多部门的C++代码库,需要更好地组织。我想发现一种方法来映射任何给定header的哪些源文件使用哪些符号。这是希望如果只有一个部门使用给定的功能,则可以将其移出共享区域并移至该部门的区域。尝试我的第一个想法是使用符号表:即。编译项目并转储每个目标文件的符号。从那里我想我可以简单地编写一个脚本来检查是否使用了我的头文件中的符号。虽然这种方法看起来可行,但它需要我创建一个我要从标题中查找的符号列表。以我有限的知识,我不确定如何自动化这样一个过程,并且有数百个头文件要测试,手动完成是不可能的。问题我的方法有效吗?如果是这样..我可以使用什么从我的头