草庐IT

符号化

全部标签

不明白为什么这四个符号相同?

阵列声明:intarr[]={34,65,23,75,76,33};四个符号:(考虑i=0)arr[i]和*(arr+i)和*(i+arr)和i[arr]看答案让我们看一下您的数组在记忆中的布局:lowaddresshighaddress||vv+----+----+----+----+----+----+|34|65|23|75|76|33|+----+----+----+----+----+----+^^^^|||...etc|||||arr[2]|||arr[1]|arr[0]第一个元素是arr[0],第二arr[1]很清楚,这就是每个人都学到的。不清楚的是编译器实际上翻译了一个表达式a

c++ - 在哪里可以为开源项目创建免费的符号服务器?

我的开源项目是C++动态链接库。大多数错误-崩溃。我想创建公共(public)符号服务器来简化内存转储的调试。另请参阅:SettingupaSymbolServer 最佳答案 我假设您使用的是Microsoft工具?如果是这样,您需要做的就是使用Web服务器公开您的“symstore”目录,然后配置调试器以访问该存储:srv*symbol-cache-location*http://your.web.server.com/symboldir“Windows调试工具”文档(debugger.chm)包含有关配置IIS的详细信息-我相信

c++ - 如何轻松生成具有静态存储的符号列表?

我们有一个用GCC和MSVC构建的大型C++项目,我们遇到了staticinitializationorderfiasco.有没有一种方法可以生成参与静态初始化的符号列表,以便我可以生成解决问题的计划?我已经从GCC和MSVC创建了一个映射文件。MSVC的输出看起来不是很有用。似乎可以使用GCC的映射文件-我提取了与bss部分相关的所有内容。然而,许多符号来自图书馆,只是给信息添加了噪音。是否有技巧或其他一些方便的方法来获取我正在寻找的信息(除了手动读取每个源文件之外)? 最佳答案 对于VisualC++:对.map文件的行进行排序

c++ - QT 5.6 静态未解析的外部符号

我正在开发一个使用QWidget并静态链接Qt5.6的小型应用程序。我现在正在使用VS12。#include#includeintmain(intargc,char*argv[]){QApplicationa(argc,argv);QMainWindoww;w.show();returna.exec();}编译正常,但出现链接器错误。1>libGLESv2d.lib(global_state.obj):errorLNK2019:unresolvedexternalsymbol"unsignedlong__cdeclCreateTLSIndex(void)"(?CreateTLSInde

c++ - 为什么我的 `.a` 文件中所有符号的值都是 0

长话短说,我正在通过另一个库的构建系统构建jsoncpp(webrtc,说它是庞然大物将是一种轻描淡写的说法)。这意味着我正在浏览一个我几乎无法控制也不熟悉的构建系统。我只想说,当我在MacOS上构建libjsoncpp.a时,生成的文件工作得非常好。当我在Linux上编译时,与生成的.a的链接导致我使用的所有内容都为undefinedreference。深入研究该文件,我注意到虽然MacOS版本看起来“正常”,如下所示(摘录):0000000000001c10T__ZNK4Json5ValueeqERKS0_0000000000001c00T__ZNK4Json5ValuegeERK

c++ - 有符号字符的按位运算

如果平台的char类型是有符号的并且一些参数在负数范围内(例如,char_bitmatch('\xf0','\xc0','\x20'))?staticconstexprboolchar_bitmatch(charc,charpos,charneg){return(c&pos)==pos&&!(c&neg);}上下文我问这个问题的原因是因为在带有-O3的GCC8.1.0中,我看到了只能由char_bitmatch('\xf0','\xc0','\x20')错误地返回true。此代码的行为符合预期:staticconstexprboolchar_bitmatch(charc_in,char

c++ - 修改dll导出(符号表)。我想混淆函数名称

我有一个第三方dll,我想更改符号名称。这可能吗?我不想让竞争对手知道我的产品使用什么组件。我没有dll的源代码。 最佳答案 在链接和运行时将可执行文件与dll绑定(bind)需要符号表。它通常包含装饰函数名称和序数。可以只使用序数。如果您正在构建库,您可以定义.def文件来控制符号表。但如果这是预建的第3方库,可能很难走。当然一切皆有可能,但我怀疑你的努力是否值得。如果您绝望了,我会尝试在十六进制编辑器中更retrofit饰函数名称中的一个字母,查找此函数的序数值,然后尝试使用带有此函数序数的GetProcAddress。

c++ - gcc 报告基于版本的库的未引用符号

我的一个共享库my.so使用基于版本的符号作为库test.so中的符号@@test_1.2.3。当我将my.so共享库与我的可执行文件链接时,它显示“未引用的符号符号@@test_1.2.3”。当链接行如下时会发生这种情况-g++-omyexecutablemyexecutable.o-L/path-to-my.so-lmy-L/path-to-test.so-ltest如果我将链接链接更改为-g++-omyexecutablemyexecutable.o-L/path-to-my.so-lmy/path-to-test.so/libtest.so它有效。为什么libtest.so在使

c++ - 无法使用 loadxml 加载 '@' 符号

我尝试执行以下几行VARIANT_BOOLvBoolTestConnection;vBoolTestConnection=m_spXMLDom->loadXML(bstrInput.m_str);bstrInput具有以下XML规范。loadXML为指定的XML返回false。bstrInput在密码标签中有“@”。如果我用任何其他密码字符替换@符号,LoadXML工作正常。你能帮我找到解决方案吗?"HGDXJHSAD&" 最佳答案 BSTR通常是UTF-16。您发布的XML字符串声称它使用的是UTF-8编码。

c++ - 为什么 sun C++ 编译器在使用调试信息进行编译时会更改符号名称?

我有这个源文件://ConstPointer.cppconstshort*constconst_short_p_const=0;constshort*const_short_p=0;并使用和不使用调试信息对其进行编译(SUNC++编译器5.10):#CCConstPointer.cpp-c-oConstPointer.o#CC-gConstPointer.cpp-c-oConstPointer-debug.o以下是目标文件的符号名称没有调试信息:#nm-CConstPointer.oConstPointer.o:[Index]ValueSizeTypeBindOtherShndxNam