C++ gtkmm的编译问题

C++ gtkmm的编译问题,c++,eclipse,gtkmm,C++,Eclipse,Gtkmm,OS:Fedora 14 编译器:g++(GCC)4.5.1 20100924(Red Hat 4.5.1-4) 我通过yum从存储库安装了gtkmm24-devel。为了确保安装按计划进行,我决定尝试页面上的一个示例 #include <gtkmm.h> int main(int argc, char *argv[]) { Gtk::Main kit(argc, argv); Gtk::Window window; Gtk::Main::run(windo

OS:Fedora 14

编译器:g++(GCC)4.5.1 20100924(Red Hat 4.5.1-4)

我通过yum从存储库安装了gtkmm24-devel。为了确保安装按计划进行,我决定尝试页面上的一个示例

#include <gtkmm.h>

int main(int argc, char *argv[]) {
    Gtk::Main kit(argc, argv);
    Gtk::Window window;
    Gtk::Main::run(window);
    return 0;
}
然后,我尝试使用
#include
并重新编译来包含gtkmm,这是另一个错误!:(


感谢阅读。

这些步骤通常有助于解决此问题:

  • 在计算机上搜索glibmm.h
    • 如果找到-将其目录添加到包含路径列表
    • 如果找不到-并找出它包含在哪个库中。在本例中,您将发现它是(令人惊讶的!)glibmm。使用您的软件包管理器安装它

如注释中所述,问题是编译器错误,编译器正在争论缺少的(头)文件。我上面描述的步骤要么找到缺少的文件的位置,要么帮助您安装头文件所属的库。

简短回答

将'pkg config gtkmm-2.4--cflags'的输出用于包含路径,将'pkg config gtkmm-2.4--libs'的输出用于库链接

长答案

它说找不到gtkmm.h,没问题,我只是忘了链接库

构建C/C++程序分为两个独立的步骤。首先编译源文件,输出目标文件;然后将目标文件链接在一起。您遇到的错误来自编译步骤

在Linux上,大多数库都附带了pkgconfig文件,以便于其他程序使用这些库。gtkmm还附带了自己的pkgconfig文件

您试图手动为include path指定/usr/include/gtkmm-2.4;这是错误的。请使用pkgconfig的输出找出头文件的位置。要获取gtkmm所需的所有include目录,请使用以下命令:

pkg-config gtkmm-2.4 --cflags
要进行链接,请使用以下pkgconfig命令获取需要链接的库:

pkg-config gtkmm-2.4 --libs
您可以通过直接调用g++在命令行上对其进行测试

g++ myfirstprogram.cpp -o myfirstprogram `pkg-config gtkmm-2.4 --cflags --libs`

有关更多信息,请参阅gtkmm文档:

这不是“链接”错误。这是“编译器”错误。这是一个很大的区别。很抱歉,在系统编程方面,我还是个新手。我将添加我的编译器和版本。我已经安装了库及其路径(/usr/lib),但错误仍然存在:(看来安装这些库只会给我提供共享对象(.so)。Boost也有同样的问题,经过一段时间的思考后,我求助于从源代码处编译它(源代码为我提供了所需的正确标题),我希望避免这种情况,并了解我到底做错了什么,但如果有必要,我会这样做。请注意,您必须安装库的开发版本才能获取头文件。这些头文件通常在其包名中标记为-dev扩展名。包glibmm24-devel-2.24.2-1.fc14.1.i686已安装且最新版本和你能在你的系统上找到头文件吗?嗨,kavel。我发现你的答案对帮助我编译我的项目非常有帮助,但我仍然在链接方面遇到困难。你愿意在这里帮助我回答我的问题吗()?非常感谢!
pkg-config gtkmm-2.4 --libs
g++ myfirstprogram.cpp -o myfirstprogram `pkg-config gtkmm-2.4 --cflags --libs`