问题标签 [gcc5]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++11 - gtkmm 对某些 gtk::builder 函数 add_from_file 的未定义引用
我正在使用 eclipse、mingw-w64、gtkmm2.4、glade 编译一些简单的程序。
我可以按照教程编译 hello world gtkmm 示例,但是当涉及到 glade 时出现了一些奇怪的未定义错误。
编译运行流畅的程序,即 gtkmm 2.24 简单示例教程https://developer.gnome.org/gtkmm-tutorial/2.24/sec-basics-simple-example.html.en
但是,当我尝试运行 glade 章节(24.2.1)中的另一个简单示例时,事情并没有成功。
https://developer.gnome.org/gtkmm-tutorial/2.24/sec-builder-accessing-widgets.html.en 示例:
编译时出现如下错误
test.cpp:(.text.startup+0x281): undefined reference to Gtk::Builder::add_from_file(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
似乎将参数“something.glade”作为类型std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&
(我不知道它是什么)。
根据 gtkmm 手册(https:developer.gnome.org/gtkmm/stable/classGtk_1_1Builder.html#aa3f4af4e7eaf7861c8283dc0dbd5254c)似乎只需要Gtk::Builder::add_from_file(const std::string & filename)
. 那么参数类型真的有问题吗?
我尝试通过执行std::string()
or将其转换为 std::string string()
,但它给出了相同的错误。
我试过注释掉有问题的行,它编译得很好。
Gtk::Builder::create()
没有收到未定义的编译错误引用refBuilder->get_widget("window1", window);
没有收到未定义的编译错误引用
所以现在我一直在摸索这个似乎微不足道的问题。请提供一些帮助。
了解更多信息
pkg-config --cflags --libs
yielded-IE:/gtkmm64/include/gtkmm-2.4 -IE:/gtkmm64/lib/gtkmm-2.4/include -IE:/gtkmm64/include/atkmm-1.6 -IE:/gtkmm64/include/giomm-2.4 -IE:/gtkmm64/lib/giomm-2.4/include -IE:/gtkmm64/include/pangomm-1.4 -IE:/gtkmm64/lib/pangomm-1.4/include -IE:/gtkmm64/include/gtk-2.0 -IE:/gtkmm64/include/gdkmm-2.4 -IE:/gtkmm64/lib/gdkmm-2.4/include -IE:/gtkmm64/include/atk-1.0 -IE:/gtkmm64/include/glibmm-2.4 -IE:/gtkmm64/lib/glibmm-2.4/include -IE:/gtkmm64/include/glib-2.0 -IE:/gtkmm64/lib/glib-2.0/include -IE:/gtkmm64/include/sigc++-2.0 -IE:/gtkmm64/lib/sigc++-2.0/include -IE:/gtkmm64/include/cairomm-1.0 -IE:/gtkmm64/lib/cairomm-1.0/include -IE:/gtkmm64/include/pango-1.0 -IE:/gtkmm64/include/cairo -IE:/gtkmm64/include -IE:/gtkmm64/include/freetype2 -IE:/gtkmm64/include/libpng14 -IE:/gtkmm64/lib/gtk-2.0/include -IE:/gtkmm64/include/gdk-pixbuf-2.0 -LE:/gtkmm64/lib -lgtkmm-2.4 -latkmm-1.6 -lgdkmm-2.4 -lgiomm-2.4 -lpangomm-1.4 -lgtk-win32-2.0 -lglibmm-2.4 -lcairomm-1.0 -lsigc-2.0 -lgdk-win32-2.0 -latk-1.0 -lgio-2.0 -lpangowin32-1.0 -lgdi32 -lpangocairo-1.0 -lgdk_pixbuf-2.0 -lpng14 -lpango-1.0 -lcairo -lgobject-2.0 -lgmodule-2.0 -lgthread-2.0 -lglib-2.0 -lintl
,我已将其包含在项目中pkg-config --modversion gtkmm2.4
产生了 2.22.0,所以我怀疑它与 add_from_file() 的 2.14 要求有什么关系pkg-config --modversion gtk+2.0
产生 2.22.0- 我没有使用任何标志,例如
--std=c++xx
. - 视窗 8 64 位
linux - 在 Linux Mint LMDE 2 中安装 GCC5
我是 Linux 新手,我想卸载安装在我的发行版 Linux Mint LMDE 2 中的 gcc 4.9 并安装 gcc 5。我尝试使用以下命令:
但它没有奏效。有人可以帮我吗?请提供所有要遵循的步骤。先感谢您
c++ - 为什么在循环之前将 const& 标量值分配给 const 会有所帮助?
在 GCC 5.4.0 中stl_algobase.h
,我们有:
我不明白为什么标量的变体比一般变体有任何优势。我的意思是,它们不会被编译成完全相同的东西吗?将堆栈中的加载__value
到寄存器中并在整个循环中使用该寄存器?
gcc - `-march` 和指令集开关之间会不会有冲突?
我正在使用以下命令编译示例程序:
问题:
- 为什么 GCC 不抱怨启用 MMX、SSE4 和 3DNow 的开关!与所选架构 i386 不兼容?
- 编译器是否生成无法在 i386 上运行的可执行文件?
c - 误解C switch 语句还是gcc bug?
使用 GCC 4.4.7 和 LLVM 6.1 编译时,以下代码似乎可以正确执行。但我认为它不能正确编译 gcc 版本 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.4)。
以下是我将问题简化为:
如果我编译它: gcc -O0 -g -Wall -Werror sillyswitch.c -o sillyswitch
它会打印
这是我期望它打印的
但是,如果我使用以下命令编译它: gcc -O -g -Wall -Werror sillyswitch.c -o sillyswitch
它会打印
这不是我期望看到的。
我不明白为什么打开优化后它不能按预期工作。代码错误是因为在第二个循环中采用的 switch 语句的分支是任意的吗?因为它是C,我是否以某种方式射中了自己的脚?
完整输出失败:
成功完整输出:
c++ - GCC 6.2.0 的 CXX11 未定义引用
我们已经在一台 Scientific Linux 机器上手动安装了 GCC 6.2.0。C++ 应用程序的编译似乎很好,但我们undefined references
在链接时得到了很多 CXX11
我们知道双重 ABI 问题,但编译-D_GLIBCXX_USE_CXX11_ABI=0
没有任何区别。我们还有哪些其他选择?
更新
CMAKE配置如下:
这是编译行file.cpp
和链接(实际上失败的地方)
此外,MPICH 3.2 已使用新编译器 (gcc 6.2.0) 构建
gcc - wxWidgets 已弃用的构造函数
我正在尝试使用 wxWidgets 3.0 库编译以下代码:
foo.h
foo.cpp
文件wx/menuitem.h 代码中定义的构造函数:
使用 gcc 5.4.0、Ubuntu 16.04 x86_64 编译:
我该如何解决?
c++ - 错误:“log2”不是“std”的成员
我不确定我在这里看到了什么。下面的测试结果来自运行 OS X 10.5.8 的旧 PowerMac G5。它仍然可以在大端 PowerPC cpu 下进行测试。编译器是 GCC 5.4,它由 MacPorts 提供。
测试程序如下。编译它会导致错误error: 'log2' is not a member of 'std'
。
根据是 std::log2() 是扩展还是 C++ 标准?,std::log2
应该可用。
为什么程序编译失败?
这可能与旧硬件有关:C++11 cmath 函数不在 std 命名空间中,用于 android NDK w/gcc-4.8 或 clang 3.4。我意识到 Android 是一个不同的平台。
现在在 MacPorts 问题跟踪器中打开:Issue 53226: PowerMac, GCC 5.4 and "error: 'std::log2' has not been declared"。
现在在 GCC 问题跟踪器中打开:Issue 79017: Old PowerMac G5, MacPorts GCC 5.4, C++11 and "std::log2 has not been declared"
c - 我的 fma() 坏了吗?
在使用时,我希望下面标有 的输出行中double fma(double x, double y, double z);
的非零值。它似乎在内部仅使用精度而不是指定的无限精度。d
'?'
long double
fma
函数 compute (x
×y
) + ,作为一个三元运算四舍五入:它们根据当前的舍入模式将值(好像)计算为无限精度并舍入一次到结果z
格式。§7.12.13.1 2(我的重点)
我的fma()
坏了,或者我如何在代码或编译选项中错误地使用它?
输出
版本信息
c - 使用gcc而不是clang在for循环错误中分配结构
您好,我在gcc
使用以下命令编译的 C11 程序上收到此警告(版本 5.4.0):
但没有clang
(版本 3.8.0):
我在 Ubuntu 16.04 上。
这是代码
这里的定义str_slice
:
以及使用它的功能:
如有必要,有关的代码build_full_path
使用 clang 编译时,我得到了一个具有良好行为的可执行文件。所以我做错了什么?还是我发现了一个错误?
这里是我的程序的完整代码(过时):https ://gist.github.com/darnuria/12af88c509310c2b40e0031522882720
编辑:使用 ofmemcpy
而不是strncpy
. 删除标量类型的 const。