#gcc #ubuntu #d #sfml #dmd
#gcc #ubuntu #d #sfml #dmd
Вопрос:
Я запускаю 64-разрядную Ubuntu Linux с DMDv2.052, пытаясь заставить приложение работать с DSFML2, но я продолжаю сталкиваться с ошибками компоновщика.
Я собрал библиотеки SFML и CSFML, используя общие библиотеки релизные сборки, и установил их, затем создал привязки DSFML следующим образом:
me@lappy486:~/devl/sfml2/bindings/d/import/dsfml/system$ dmd -m64 -lib *.d -of../../../lib/libdsfml-system.a
me@lappy486:~/devl/sfml2/bindings/d/import/dsfml/system$ cd ../window
me@lappy486:~/devl/sfml2/bindings/d/import/dsfml/window$ dmd -m64 -lib *.d -of../../../lib/libdsfml-window.a
me@lappy486:~/devl/sfml2/bindings/d/import/dsfml/window$ cd ../graphics
me@lappy486:~/devl/sfml2/bindings/d/import/dsfml/graphics$ dmd -m64 -lib *.d -of../../../lib/libdsfml-graphics.a
me@lappy486:~/devl/sfml2/bindings/d/import/dsfml/graphics$ cd ../audio
me@lappy486:~/devl/sfml2/bindings/d/import/dsfml/audio$ dmd -m64 -lib *.d -of../../../lib/libdsfml-audio.a
При попытке создать проект для их использования я получаю следующие ошибки:
me@lappy486:~/devl/d/Gossamer$ dmd -m64 *.d game/*.d graphics/*.d -L"-L/home/me/devl/sfml2/bindings/d/lib -ldsfml-system -ldsfml-window -ldsfml-graphics -ldsfml-audio"
collision.o:(.data 0xab0): undefined reference to `_D5dsfml8graphics5color12__ModuleInfoZ'
collision.o:(.data 0xb18): undefined reference to `_D5dsfml6system9exception16LoadingException7__ClassZ'
collision.o:(.data 0xbe0): undefined reference to `_D5dsfml8graphics3all12__ModuleInfoZ'
collision.o:(.data 0xd38): undefined reference to `_D5dsfml8graphics3all12__ModuleInfoZ'
collision.o:(.data 0xd40): undefined reference to `_D5dsfml6window3all12__ModuleInfoZ'
collision.o:(.data 0xdd8): undefined reference to `_D5dsfml6system9exception16LoadingException7__ClassZ'
collision.o:(.data 0xf40): undefined reference to `_D5dsfml8graphics3all12__ModuleInfoZ'
collision.o: In function `_D8graphics5image5Image6__ctorMFAyaZC8graphics5image5Image':
graphics/text.d:(.text._D8graphics5image5Image6__ctorMFAyaZC8graphics5image5Image 0x17): undefined reference to `_D5dsfml8graphics6sprite6Sprite7__ClassZ'
graphics/text.d:(.text._D8graphics5image5Image6__ctorMFAyaZC8graphics5image5Image 0x2a): undefined reference to `_D5dsfml8graphics5image5Image7__ClassZ'
graphics/text.d:(.text._D8graphics5image5Image6__ctorMFAyaZC8graphics5image5Image 0x67): undefined reference to `_D5dsfml8graphics5image5Image6__ctorMFAyaZC5dsfml8graphics5image5Image'
graphics/text.d:(.text._D8graphics5image5Image6__ctorMFAyaZC8graphics5image5Image 0xa3): undefined reference to `_D5dsfml8graphics5color4RGBA5WHITEyS5dsfml8graphics5color4RGBA'
graphics/text.d:(.text._D8graphics5image5Image6__ctorMFAyaZC8graphics5image5Image 0xac): undefined reference to `_D5dsfml8graphics6sprite6Sprite6__ctorMFC5dsfml8graphics5image5ImagefffffS5dsfml8graphics5color4RGBAZC5dsfml8graphics6sprite6Sprite'
collision.o: In function `_D8graphics6screen6Screen5clearMFZv':
graphics/text.d:(.text._D8graphics6screen6Screen5clearMFZv 0xa): undefined reference to `_D5dsfml8graphics5color4RGBA5BLACKyS5dsfml8graphics5color4RGBA'
collision.o: In function `_D8graphics6screen6Screen6__ctorMFAyakkZC8graphics6screen6Screen':
graphics/text.d:(.text._D8graphics6screen6Screen6__ctorMFAyakkZC8graphics6screen6Screen 0x24): undefined reference to `_D5dsfml8graphics12renderwindow12RenderWindow7__ClassZ'
graphics/text.d:(.text._D8graphics6screen6Screen6__ctorMFAyakkZC8graphics6screen6Screen 0x73): undefined reference to `_D5dsfml8graphics12renderwindow12RenderWindow6__ctorMFS5dsfml6window9videomode9VideoModeAyaE5dsfml6window6window5StyleS5dsfml6window6window15ContextSettingsZC5dsfml8graphics12renderwindow12RenderWindow'
collision.o: In function `_D8graphics4text4Font6__ctorMFAyaZC8graphics4text4Font':
graphics/text.d:(.text._D8graphics4text4Font6__ctorMFAyaZC8graphics4text4Font 0x17): undefined reference to `_D5dsfml8graphics4font4Font7__ClassZ'
graphics/text.d:(.text._D8graphics4text4Font6__ctorMFAyaZC8graphics4text4Font 0x54): undefined reference to `_D5dsfml8graphics4font4Font6__ctorMFAyaZC5dsfml8graphics4font4Font'
collision.o: In function `_D8graphics4text4Text6__ctorMFC8graphics4text4FontAyakS5dsfml8graphics5color4RGBAZC8graphics4text4Text':
graphics/text.d:(.text._D8graphics4text4Text6__ctorMFC8graphics4text4FontAyakS5dsfml8graphics5color4RGBAZC8graphics4text4Text 0x19): undefined reference to `_D5dsfml8graphics4text4Text7__ClassZ'
graphics/text.d:(.text._D8graphics4text4Text6__ctorMFC8graphics4text4FontAyakS5dsfml8graphics5color4RGBAZC8graphics4text4Text 0x3b): undefined reference to `_D5dsfml8graphics4text4Text6__ctorMFAyaC5dsfml8graphics4font4FontkZC5dsfml8graphics4text4Text'
collect2: ld returned 1 exit status
--- errorlevel 1
Кто-нибудь может помочь с этим? Я не смог заставить это работать.
Комментарии:
1. что, черт возьми, такое DSFML2?
Ответ №1:
Я не знаю, что не так, но я бы начал с устранения любых сложностей, которые вы можете:
- Использование
.so
в D … «проблематично», если возможно, используйте статическую компоновку. - Попробуйте собрать его в 32-битном режиме (64-битный по-прежнему альфа, насколько я слышал)
- Попробуйте создать приложение hello World, используя ту же настройку библиотеки.
- Не создавайте ссылку из DMD, делайте это явно через
ld
. (Скомпилируйте что-нибудь, что уже работает в подробном режиме, чтобы получить отправную точку для командной строки, которая вам понадобится.)
Комментарии:
1. Я думаю, вы имеете в виду
ld
, неln
.ln
предназначен для создания ссылок на файловую систему.