草庐IT

c++ - WinDbg !heap 命令由于缺少符号而无法正常工作

我正在尝试使用WinDbg调试我的具有C++非托管内存分配的.NET应用程序。当我尝试运行!heap命令时,我收到以下错误消息:0:022>!heap***ERROR:Symbolfilecouldnotbefound.DefaultedtoexportsymbolsforC:\Windows\system32\KERNEL32.dll-****************************************************************************************Yourdebuggerisnotusingthecorrectsymbol

c++ - Unresolved inclusion : Eclipse Not Showing "Includes" tab under "Paths and Symbols":

我正在尝试解决Eclipse中的一些包含问题。通常我单击项目属性,然后单击“C/C++General”,然后单击“路径和符号”,然后开始添加包含目录,如下所示:但是今天,出于某种奇怪的原因,Eclipse(Juno)没有显示包含选项卡!如何恢复“包含”选项卡以便解析项目中的符号? 最佳答案 默认情况下该选项卡是隐藏的,您可以通过输入再次启用它:Windows>首选项>C/C++>属性页设置>显示“包含文件”...您可能需要重新启动Eclipse才能显示。 关于c++-Unresolved

c++ - Qi Symbols 性能慢?

我想提出一个让我陷入困境的主题,并提出了一个关于齐::符号。这一切都始于我查看新的野兽图书馆并阅读atutorialexample它以一个从http路径猜测mime类型的函数开始扩展。我开始仔细观察,看到了这个:autoconstext=[&path]{autoconstpos=path.rfind(".");if(pos==boost::beast::string_view::npos)returnboost::beast::string_view{};returnpath.substr(pos);}();我花了一段时间才弄清楚这是一个IIFE在C++风格中,用于初始化ext,同时声

C++:使用 "Undefined symbols for architecture x86_64"时出现 "std"错误

我是一名新的C++程序员,我正在尝试运行一个简单的我已经创建了一个文件“test.cpp”,我正在使用gcc在命令行上对其进行编译。命令是“gcctest.cpp-otest”。然后我运行“./test”。(是的,这个过程听起来很基本。)文件如下:#includeintmain(){printf("HelloWorld!");std::cout当我包含包含std的行时,gcc返回以下长错误:Undefinedsymbolsforarchitecturex86_64:"std::__1::locale::use_facet(std::__1::locale::id&)const",ref

c++ - Visual C++ 2010 - fatal error LNK1169 : one or more multiply defined symbols found

这是一个程序:#includeusingnamespacestd;intmain(){cout>i;try{if(i==0)throw0;if(i==2)throw"error";}catch(inti){cout在编译时(Windows7上的MicrosoftvisualC++2010express),我收到错误消息:fatalerrorLNK1169:oneormoremultiplydefinedsymbolsfound 最佳答案 其实这段代码没有错误。源文件的数量可能是问题所在。在同一个编译器中将此代码作为一个新项目尝试,或

c++ - 为什么我得到 "Undefined symbols ... typeinfo ... vtable"与虚拟和具体类?

我正在重新学习C++(意思是:对我温柔一点!:)。我有一个父类(superclass)(Node),它有一个必须在子类(TestNode)中实现的抽象方法(step())。它编译没有错误,也没有任何警告,但链接它会导致:bash-3.2$g++-Wall-o./bin/t1src/t1.cppUndefinedsymbolsforarchitecturex86_64:"typeinfofortest::Node",referencedfrom:typeinfofortest::TestNodeint1-9f6e93.o"vtablefortest::Node",referencedfr

c++ - 强制一个符号到 ELF 文件的顶部

在我们通过GCC链接器生成的ELF文件中,ELF文件的顶部始终是可执行代码的版本标识符。这是通过创建version.c文件并使生成的目标文件成为链接命令中的第一个可链接对象来实现的。然而,对于一个可执行文件,这无法正常工作,我们可以发现的唯一区别是可执行文件包含C和C++代码的混合,并且版本符号被重新定位到其他地方。因此,问题是有没有一种方法可以保证符号在ELF文件中的绝对位置,以便通过链接器命令或代码属性指令,符号始终位于文件的顶部? 最佳答案 您可以通过脚本控制链接器的输出。在您的情况下,您可以检查:https://source

c++ - 发现符号用法

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

c++ - C++编译器创建的符号表

我正在阅读EffectiveC++,第3版和第2项(更喜欢const、enums和inlines而不是#defines),ScottMeyers提到了符号表:他解释说#defines可能不会出现在符号表中。基于答案here,一点建议reading其中,以及Wikipedia在文章中,我将符号表定义如下:由于编译器只为每个翻译单元创建目标文件,我们仍然需要一种在翻译单元之间引用符号的方法。这是使用为每个目标文件创建的表来完成的,以便可以在稍后阶段定义符号-在从目标文件创建可执行文件/库时由链接器定义。在链接期间,链接器将符号替换为其适当的内存地址。这是我想知道的:我的上述解释正确吗?链接

c++ - 防止 Boost Spirit Symbol 解析器过早接受关键字

当以有效关键字(符号)开头时,如何防止BoostSpirit符号解析器接受关键字(符号)。我希望该构造无法将“ONEMORE”作为一个整体进行解析,并且无法成功解析“ONE”,因为这是一个有效的关键字,然后在“MORE”上失败。下面是代码的实际输出:Keywordasanumber:1Keywordasanumber:2Keywordasanumber:1Invalidkeyword:MORETHREE这就是我喜欢的样子:Keywordasanumber:1Keywordasanumber:2Invalidkeyword:ONEMOREKeywordasanumber:3该代码只是一个