GTK 编译适用于 gcc,但不适用于 g++。 g++ 无法识别 -rdynamic 命令

GTK compiling works with gcc but not with g++. g++ does not recognize -rdynamic command

这是我的 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.

你必须用

包围函数
 extern "C" {
 }

否则 function/symbol 名称会被 C++ 损坏,GTK 无法查找。