【问题标题】:GTK compiling works with gcc but not with g++. g++ does not recognize -rdynamic commandGTK 编译适用于 gcc,但不适用于 g++。 g++ 无法识别 -rdynamic 命令
【发布时间】:2021-07-28 03:40:37
【问题描述】:

这是我的 main.c 和 main.cpp 代码

#include <gtk/gtk.h>



void quitButtonClicked(__attribute__((unused)) GtkWidget *widget,
                __attribute__((unused)) gpointer   data)
{
        g_print("Quit Clicked\n");
        gtk_main_quit();
}


// Handle the user trying to close the window
gboolean windowDelete(__attribute__((unused)) GtkWidget *widget,
                __attribute__((unused)) GdkEvent  *event,
                __attribute__((unused)) gpointer   data)
{
        g_print("%s called.\n",__FUNCTION__);
        return FALSE;    // Returning TRUE stops the window being deleted.
        // Returning FALSE allows deletion.
}

int main ( int argc, char **argv) {
        GtkWidget *window;
        GtkBuilder *builder = NULL;

        gtk_init (&argc , &argv);

        builder = gtk_builder_new();

        if(gtk_builder_add_from_file (builder,"window_main.glade" , NULL) == 0)
        {
                printf("gtk_builder_add_from_file FAILED\n");
                return(0);
        }
        window  = GTK_WIDGET (gtk_builder_get_object (builder,"window1"));


        gtk_builder_connect_signals(builder,NULL);

        gtk_widget_show_all (window);
        gtk_main ();
        return 0;
}

编译时使用 gcc -o hello_world $(pkg-config --cflags --libs gtk+-3.0) -rdynamic main.c

一切都很完美。

但是运行这个不起作用。 g++ -o hello_world $(pkg-config --cflags --libs gtkmm-3.0) -rdynamic main.cpp

我收到此警告。

(hello_world:40684): Gtk-WARNING **: 15:32:33.179: 找不到信号处理程序“windowDelete”。你是用 -rdynamic 编译的吗?

如何修改我的 g++ 编译以确保它按预期工作?我想稍后运行 C++ 代码而不是 C。

【问题讨论】:

    标签: c++ user-interface gcc g++ gtk


    【解决方案1】:

    你必须用

    包围函数
     extern "C" {
     }
    

    否则函数/符号名称会被 C++ 损坏,GTK 无法查找。

    【讨论】:

      猜你喜欢
      • 2017-11-13
      • 1970-01-01
      • 1970-01-01
      • 2021-02-25
      • 1970-01-01
      • 2012-04-17
      • 2022-09-28
      • 2016-07-17
      • 1970-01-01
      相关资源
      最近更新 更多