Gcc Can';GTK3程序是否在多个源文件中?

Gcc Can';GTK3程序是否在多个源文件中?,gcc,gtk3,Gcc,Gtk3,我正在尝试用GTK3中的多个C文件制作一个C程序 作为我使用的模型: 还有这个 我的程序如下所示: Functions.c(功能激活时) 而且没有编译 是的,GTK程序可以拆分为多个C文件 出现错误是因为您告诉编译器该函数仅在单个C源文件中可见: static void activate (GtkApplication* app, gpointer user_data) 如果要从另一个源文件使用该函数,则需要删除static关键字。 在头文件和C文件中,您都需要删除它。我的问题是通过删除@G

我正在尝试用GTK3中的多个C文件制作一个C程序

作为我使用的模型: 还有这个

我的程序如下所示:

Functions.c(功能激活时)
而且没有编译

是的,GTK程序可以拆分为多个C文件

出现错误是因为您告诉编译器该函数仅在单个C源文件中可见:

static void activate (GtkApplication* app, gpointer user_data)
如果要从另一个源文件使用该函数,则需要删除
static
关键字。
在头文件和C文件中,您都需要删除它。

我的问题是通过删除@GerhardhIf建议的“静态”解决的。如果答案解决了您的问题,您可能会考虑将该答案标记为已接受。我很乐意。但是我怎么把它标记为已接受呢?刚刚找到。接受answar!(不是我的问题解决了。:)
#include <gtk/gtk.h>
#ifndef FUNCTIONS_H_INCLUDED
#define FUNCTIONS_H_INCLUDED

 static void activate (GtkApplication* app,  gpointer user_data);
#endif
#include "stdio.h"
#include <gtk/gtk.h>
#include "Functions.h"

int main(int    argc,      char **argv)
{
    GtkApplication *app;
    int status;

    app = gtk_application_new ("org.gtk.example", G_APPLICATION_FLAGS_NONE);
    g_signal_connect (app, "activate", G_CALLBACK (activate), NULL);
    status = g_application_run (G_APPLICATION (app), argc, argv);
    g_object_unref (app);
    return status;
}
gcc -Wall `pkg-config --cflags gtk+-3.0` Functions.c  Main.c `pkg-config --libs gtk+-3.0`
Functions.c:7:13: warning: ‘activate’ defined but not used [-Wunused-function]
 static void activate (GtkApplication* app, gpointer user_data)
             ^
In file included from Main.c:4:0:
Functions.h:7:14: warning: ‘activate’ used but never defined
  static void activate (GtkApplication* app,  gpointer user_data);
              ^
/tmp/ccWzazr0.o: I funktionen "main":
Main.c:(.text+0x38): undefined reference to `activate'
collect2: error: ld returned 1 exit status
static void activate (GtkApplication* app, gpointer user_data)