2014-11-23 6 views
0

Я установил GtkD от AUR, и теперь я пытаюсь скомпилировать this tutorial code. Как для компиляции самого GtkD, так и для учебного кода я использую GDC 4.9.1.Получение огромной ошибки из-за GtkD по простой программе

Я попытался скомпилировать код следующим образом (hello.d это имя файла):

gdc -Wall -Werror -Wdeprecated -Wunknown-pragmas -g -m64 `pkg-config --cflags --libs gtkd-2` -O3 -frelease -o hello 

Но когда я пытаюсь это, я получаю это:

/tmp/ccxejYOB.o: In function `_Dmain': 
/home/koz/Documents/Programming/D/gtkd/hello.d:23: undefined reference to `_D3gtk4Main4Main4initFKAAyaZv' 
/home/koz/Documents/Programming/D/gtkd/hello.d:24: undefined reference to `_D3gtk10MainWindow10MainWindow7__ClassZ' 
/home/koz/Documents/Programming/D/gtkd/hello.d:24: undefined reference to `_D3gtk10MainWindow10MainWindow6__ctorMFAyaZC3gtk10MainWindow10MainWindow' 
/home/koz/Documents/Programming/D/gtkd/hello.d:26: undefined reference to `_D3gtk5Label5Label7__ClassZ' 
/home/koz/Documents/Programming/D/gtkd/hello.d:26: undefined reference to `_D3gtk5Label5Label6__ctorMFAyabZC3gtk5Label5Label' 
/home/koz/Documents/Programming/D/gtkd/hello.d:28: undefined reference to `_D3gtk4Main4Main3runFZv' 
/tmp/ccxejYOB.o:(.data+0x30): undefined reference to `_D3gtk10MainWindow12__ModuleInfoZ' 
/tmp/ccxejYOB.o:(.data+0x38): undefined reference to `_D3gtk5Label12__ModuleInfoZ' 
/tmp/ccxejYOB.o:(.data+0x40): undefined reference to `_D3gtk4Main12__ModuleInfoZ' 
/tmp/ccxejYOB.o:(.data._D67TypeInfo_S3std8typecons35__T6scopedTC5cairo7Context7ContextZ6Scoped6__initZ[_D67TypeInfo_S3std8typecons35__T6scopedTC5cairo7Context7ContextZ6Scoped6__initZ]+0x58): undefined reference to `_D3std8typecons35__T6scopedTC5cairo7Context7ContextZ6Scoped6__dtorMFZv' 

У меня нет clue, что здесь происходит, и был бы признателен за всю возможную помощь.

+0

Возможный дубликат [GtkD undefined reference] (http://stackoverflow.com/questions/23863213/gtkd-undefined-reference) –

ответ

1

GtkD в AUR скомпилирован с использованием DMD. Совместимость ABI между двоичными файлами DMD и GDC не гарантируется, и соединение может завершиться неудачно, как в вашем случае. (Связывание может также преуспеть, и вы получите проблемы во время выполнения). Чтобы устранить эту проблему, вы можете попробовать использовать DMD и посмотреть, решит ли это вашу проблему.

В любом случае, я бы порекомендовал использовать dub и gtk-d библиотеку из реестра dub. Dub позаботится о компиляции исходного кода и кода gtk-d и свяжет их вместе. И это позволит вам легко использовать любой компилятор.

Если вы не хотите использовать dub, вы также можете скачать gtk-d и построить его самостоятельно, используя GDC.

 Смежные вопросы

  • Нет связанных вопросов^_^