草庐IT

c++ - 添加符号时出错 : DSO missing from command line

尝试在Qt项目中使用Ogre。Ogre构建成功。运行项目它给我三个错误:/usr/lib/x86_64-linux-gnu/libboost_system.so.1.54.0:-1:error:erroraddingsymbols:DSOmissingfromcommandline-1:error:main.o:undefinedreferencetosymbol'_ZN5boost6system15system_categoryEv'当我搜索错误时,它说要编辑makefile并添加:LIBS=-lp线程但它已经存在了。如何解决这个错误? 最佳答案

c++ - 如何在运行时检测符号是否被剥离?

在我的C++程序中,如何在运行时以编程方式检测符号是否已通过Linux上的“strip”gnu开发工具去除?我想要一个函数定义,如果剥离则返回true,否则返回false。在“main()”上使用dlsym()是否可以可靠地检测到这一点? 最佳答案 我知道file命令可以区分,所以您可以查看它的源代码以了解它使用的机制。 关于c++-如何在运行时检测符号是否被剥离?,我们在StackOverflow上找到一个类似的问题: https://stackoverfl

c++ - 有什么理由不从可执行文件中删除符号吗?

几年前我问过aquestion如何减少可执行文件的大小。使用MinGW编译器,剥离符号(-s选项)有助于减少50%以上的大小。为什么剥离不是默认的——在某些情况下为什么不剥离符号有什么好的理由吗?我想更深入地理解它:今天,我只是模糊地知道链接库涉及符号。可执行文件中是否需要它们?它们是否会影响执行速度? 最佳答案 我无法想象它们会以任何明显的方式影响执行速度,但理论上,进程镜像中可能会有微小的缓存未命中。您希望在调试文件时将符号保留在文件中,以便您可以看到您在哪个函数中,检查变量的值等等。但是符号会使文件变大:可能会变大很多。因此,

c++ - c/c++ 左移无符号与有符号

我有这个代码。#includeintmain(){unsignedlonginti=1U打印出来。214748364818446744071562067968在ArchLinux64位、gcc、ivybridge架构上。第一个结果有道理,但我不明白第二个数字是从哪里来的。1表示为4byteintsignedorunsignedis00000000000000000000000000000001当你将它向左移动31次时,你会得到10000000000000000000000000000000没有?我知道左移正数本质上是2^k,其中k是你移动它的次数,假设它仍然在边界内。为什么我得到这么奇

【已解决】java中错误:找不到符号

再编译过程中,我们有时候会遇到这个问题经过总结可能是以下三种情况,程序员可自行排查:拼写错误单词拼写错误大小写错误未声明变量时使用变量(或变量超出了作用域)方法用错了,或者方法不存在在使用第三方类库时忘记导入类了ps:IDEA中可以设置类自动导入,来避免这个错误导致出现“找不到符号”的错误原因还可能会有很多种,程序员应在实际项目中更加仔细、逐渐积累经验。大多数情况下,可以归结为以下几点:编码格式不对。比如说应该是UTF-8,但有些遗留的项目会设置为GBK、GB2312等等。JDK的版本不匹配。比如说某些团队成员的电脑上安装的是JDK1.6,有的是JDK8,版本升级后的一些新语法自然就会和老版本

C语言-程序环境和预处理(1)编译、连接介绍以及预处理函数,预处理符号详解及使用说明。

前言本篇文章讲述了程序的翻译环境和执行环境,编译、连接,预定义符号,#define,#符号和##符号的相关知识。文章目录前言1.程序的翻译环境和执行环境2.编译+链接2.1翻译环境2.2运行环境3.预处理详解(各预处理符号使用说明)3.1预定义符号3.2#define3.2.1#define替换规则3.3#符号3.4##符号1.程序的翻译环境和执行环境在ANSIC的任何一种实现中,都存在两个不同的环境。第1种是翻译环境,在这个环境中源代码被转换为可执行的机器指令。第2种是执行环境,它用于实际执行代码。2.编译+链接2.1翻译环境①组成一个程序的每个源文件通过编译过程分别转换成目标代码(obje

本地NPM安装不会创建对“ bin”可执行文件的符号链接

如果我创造最小的package.json文件:{"name":"cli-test","version":"1.0.0","bin":"index.js","main":"index.js"}和index.js文件:#!/usr/bin/envnodeconsole.log("Hello")并运行npminstall,为什么不npm创建一个./node_modules/.bin/cli-test对我的链接index.js文件?包装文档在“bin”上说了这一点:在安装时,NPM将对该文件符合该文件的链接prefix/bin用于全局安装,或./node_modules/.bin用于本地安装。如果我做

c++ - C++0x 中 char 和 Unicode 的符号

从C++0x工作草案开始,用于处理Unicode的新字符类型(char16_t和char32_t)将是无符号的(uint_least16_tuint_least32_t将是基础类型)。但据我所知(也许不是很远)没有定义类型char8_t(基于uint_least8_t)。为什么?当您看到为UTF-8字符串文字引入了新的u8编码前缀时,它更加令人困惑......基于老friend(有符号/无符号)char.为什么?更新:有人提议添加一个新类型:char8_tchar8_t:UTF-8字符和字符串的类型(修订版1)http://www.open-std.org/jtc1/sc22/wg21

c++ - 对符号的 undefined reference ,即使库已链接

链接我正在处理的项目时,链接器出现以下错误:/usr/bin/ld:../IncludesandLibs/lib/libsfml21rca.a(SoundFile.o):undefinedreferencetosymbol'sf_read_short@@libsndfile.so.1.0'/usr/bin/ld:note:'sf_read_short@@libsndfile.so.1.0'isdefinedinDSO/usr/lib/gcc/i686-linux-gnu/4.6/../../../i386-linux-gnu/libsndfile.sosotryaddingittoth

c++ - 当我从 C++ 中的有符号整数中减去无符号整数时会发生什么?

如果我这样做会发生什么:unsignedintu;ints;...s-=u;预期的行为是什么:1)假设无符号整数不是太大而无法放入有符号整数?2)假设无符号整数会溢出有符号整数?谢谢。 最佳答案 一般引用标准中的5/9。在您的示例中,有符号值被转换为无符号(通过取模UINT_MAX+1),然后以UINT_MAX+1为模完成减法以给出未签名的结果。将此结果作为有符号值存储回s涉及标准整数转换-这在4.7/3中。如果该值在signedint范围内,则它会被保留,否则该值是实现定义的。我看过的所有实现都使用模运算将其插入INT_MIN到I