gpt4 book ai didi

c - 在代码块中包含一个 gobject.h

转载 作者:太空宇宙 更新时间:2023-11-04 07:26:13 25 4
gpt4 key购买 nike

我想在 Codeblocks 中使用 C GObject 库创建类。所以我有 2 个类:A.h 和 A.c但是当我像这样包含 gobject 库时:

#include <glib-2.0/gobject/gobject.h>

它给我一个错误:

 Only <glib-object.h> can be included directly.

因为这个文件包含这些行:

 #if !defined (__GLIB_GOBJECT_H_INSIDE__) && !defined (GOBJECT_COMPILATION)
#error "Only <glib-object.h> can be included directly."
#endif

嗯:

#ifndef A_H
#define A_H
#include <glib-2.0/gobject/gobject.h>
//It's only declaring an class called A

typedef struct _AClass AClass;
typedef struct _A A;

struct _AClass {
//Always Derived from GObjectClass class
GObjectClass parent_instance;
}

struct _A{
//Always Derived from GObject class
GObject parent_instance;
}

#endif // A_H

交流:

#include "/home/alex/GObject_Tutorial/include/A.h"
//It's defining a class called A

G_DEFINE_TYPE(A, aObj, G_TYPE_OBJECT);

我认为包含这些库的唯一方法是将它们添加到本地文件夹并包含类似的(但也许还有另一种方法):

#include "gobject.h"

最佳答案

谢谢。所以我的总答案是:我们不只包含 gobject/gobject.h,因为 glib-object.h 是聚合器,它包含所有这些库以提供 gobject 类的创建。我的步骤:

1) 使用以下命令查找 glibs 中的库在哪里:

 pkg-config --cflags --libs gobject-2.0

所以,我得到了结果(在你的情况下它可能不同):

 -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -lgobject-2.0 -lglib-2.0

2) 然后在code::blocks Project->Build Options->Compiler Settings->Other Options

3) 在文本字段中复制这一行 (-I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include)

4)复制到Project->Build Options->Linker Settings->Other Linker Options这一行(-lgobject-2.0 -lglib-2.0)

5)构建

6) 万岁!成功了,感谢大家:)

关于c - 在代码块中包含一个 gobject.h,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18132059/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com