2010-05-23 91 views
3

我有我的GTK +应用程序的3个文件:Ç未定义参考`some_foo”

的main.c:

#include <gtk/gtk.h> 
#include <glib/gi18n.h> 

#include "mainwindow.h" 

int main(int argc, char** argv) 
{ 
    MainWin*  win; 
    GError* err = NULL; 
    int a = 0; 
    a = some_foo(); 
    gtk_main(); 
    return 0; 
} 

mainwindo.h

#include <gtk/gtk.h> 


typedef struct _MainWin 
{ 
    GtkWindow parent; 

} MainWin; 

GtkWidget* main_win_new(); 

int some_foo(); 

MainWindow.c

#include "mainwindow.h" 


int some_foo() 
{ 
    return 1; 
} 

当我尝试呼叫some_foo in main函数,并尝试编译我看到错误:未定义的引用'some_foo'。怎么了?

谢谢。

+0

你正在使用哪个编译器/命令? – tristan 2010-05-23 13:38:33

+3

我猜你没有在构建中包含MainWindow.c。你如何建立你的项目? – avakar 2010-05-23 13:38:52

+0

你有没有考虑过使用Makefile?很可能您的项目将超出一个或两个文件。如果您需要编写一个帮助,请更新您的问题。此外,不能抗拒......只要感谢所有的富人。 – 2010-05-23 13:44:03

回答

3

您的构建中可能不包含MainWindow.c。例如。在外壳中它可能看起来像这样:

gcc $ALL_THE_FLAGS main.c MainWindow.c 
+0

我使用makefile进行编译。这个makefile由autoconf生成。它非常大。如何包含mainwindow.c文件? – 0xAX 2010-05-23 13:51:45

+1

在这种情况下,你必须查看你的'Makefile.in',并在那里添加源文件和目标文件。如果该文件较短,也许将其复制到问题中?另外还有像pastebin这样的服务。 @sterh – 2010-05-23 13:58:01

+0

Makefile.in - http://pastebin.com/t1Ae1X5P – 0xAX 2010-05-23 14:02:07