2010-05-23 49 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