【发布时间】:2010-05-23 13:35:37
【问题描述】:
我的 gtk+ 应用中有 3 个文件:
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 并尝试编译时,我看到错误:未定义的对 `some_foo' 的引用。怎么了?
谢谢。
【问题讨论】:
-
您使用了哪些编译器/命令?
-
我猜你的构建中没有包含 MainWindow.c。你如何构建你的项目?
-
你考虑过只使用 Makefile 吗?您的项目很可能会超过一两个文件。如果您需要帮助编写一个,请更新您的问题。此外,无法抗拒......这么久,感谢所有的富翁。
-
我怀疑,您的程序中混合了 C++/C 符号。尝试在 C 代码中使用
extern "C" { #include "mainwindow.h" }。如果没有帮助,请给我们转储make输出加上nm MainWindow.o加上nm main.o。