ГТК не могу найти "" - PullRequest
       5

ГТК не могу найти ""

4 голосов
/ 25 февраля 2012

Я нахожу много примеров различных применений gtk в сети, но большинство из них содержит включенный заголовок

#include <config.h>

, и я нигде не могу распечатать этот заголовок, поэтому не могу заставить эти примеры работать.

О чем это?
Где я могу взять или чем заменить этот заголовок?
Или я могу настроить такие файлы / проекты по-разному, чтобы они работали так же, как другие проекты gtk работают на моемcomp?

В настоящее время я пытаюсь скомпилировать пример сокета testsocket.c , и во время компиляции я получаю сообщение об ошибке с неопределенной ссылкой на create_child_plug.Я не вижу причин, по которым это не работает, кроме как в этом заголовке.
Но я все равно могу ошибаться.

Ответы [ 2 ]

7 голосов
/ 25 февраля 2012

Я думаю, что вы пытаетесь скомпилировать отдельный исходный файл, который не предназначен для самостоятельной работы. Две причины.

Первая причина: config.h - это имя по умолчанию для файла заголовка, выводимого Autoconf, который содержит определения для конкретной платформы. Вот почему вы нигде его не найдете - он генерируется, когда вы запускаете ./configure в своем проекте, и его содержимое зависит от того, как настроена ваша система. Так что он не будет включен ни в один проект, вы должны создать его самостоятельно с помощью Autoconf. Или просто закомментируйте #include <config.h> и посмотрите, какие определения отсутствуют, затем определите их сами.

Другая причина:

В настоящее время я пытаюсь скомпилировать пример сокета testsocket.c, и во время компиляции я получаю неопределенную ссылку на «create_child_plug». Я не вижу причин для этого не работать, кроме как в этом заголовке. Но я все равно могу ошибаться.

На самом деле этот файл содержит определение create_child_plug:

extern guint32 create_child_plug (guint32 xid, gboolean local);

Так что проблема не в том, что create_child_plug не определен. Вам не нужен заголовок, он определен прямо в исходном файле. extern означает, что фактический код этой функции находится в другом исходном файле. В этом случае вы получаете ошибку времени компоновки (не компиляции), потому что компоновщик не может найти код для этой функции. Вы должны искать его в файле .c, а не в файле .h, и компилировать этот код тоже.

Я предлагаю вам скачать весь исходный код GTK и скомпилировать его, а также запускать тестовые программы оттуда вместо того, чтобы выбирать отдельные исходные файлы из сети.

0 голосов
/ 25 февраля 2012

На самом деле, в каталоге GTK + нет заголовка с именем config.h.Тем не менее, я видел много людей с проблемами, похожими на ваши, на форумах и т. Д. Что вы, вероятно, ищете, является одним из них:

  • fontconfig.h
  • glibconfig.h
  • gdkconfig.h
  • ftconfig.h

Они расположены в:

  • include/fontconfig/
  • lib/glib-2.0/include
  • lib/gdk-2.0/include
  • include/freetype2/freetype/config

Кроме того, вы уверены, что добавили все необходимые каталоги в свой компилятор, включая путь?На Ubuntu это довольно просто, просто pkg-config gtk+-2.0.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...