Я нашел очень необходимое для моей привязки к lib с именем GDAL.
https://github.com/craig-dillabaugh/gdal
Проблема в том, что нет примеров его использования. Раньше я никогда не использовал привязки.
dub.json включает следующую строку:
"libs" : ["gdal"]
Так что, похоже, нужен файл lib с таким именем.
В старом совершает Я нашел пример компиляции без дублирования: dmd test_gdal_d.d gdal.d -L-ldgal
Оригинальный дистрибутив gdal не включает lib с таким именем. Есть только gdal111.dll
Lib.
Так что я преобразовал это с implib
в gdal111.lib
, С командой implib /s gdal111.lib gdal111.dll
Из 11 МБ размер файла становится 1 МБ.
С Dependency Walker я просмотрел таблицу символов. Это есть символы, такие как GDALGetRasterXSize
Я пытаюсь собрать все с помощью следующей команды:
dmd D:\code\binding\gdal-master\gdal-master\source\App.d D:\code\binding\gdal-master\gdal-master\source\gdal.d -L -Igdal111.lib
но я получаю следующую ошибку:
D:\code\binding\gdal-master\gdal-master>dmd D:\code\binding\gdal-master\gdal-master\source\App.d D:\code\binding\gdal-master\gdal-master\source\gdal.d -L -Igdal111.lib
OPTLINK (R) for Win32 Release 8.00.17
Copyright (C) Digital Mars 1989-2013 All rights reserved.
http://www.digitalmars.com/ctg/optlink.html
App.obj(App)
Error 42: Symbol Undefined _GDALClose
App.obj(App)
Error 42: Symbol Undefined _GDALGetRasterCount
App.obj(App)
Error 42: Symbol Undefined _GDALGetRasterXSize
App.obj(App)
Error 42: Symbol Undefined _GDALGetRasterYSize
App.obj(App)
Error 42: Symbol Undefined _GDALOpen
App.obj(App)
Error 42: Symbol Undefined _GDALAllRegister
App.obj(App)
Error 42: Symbol Undefined _GDALIdentifyDriver
App.obj(App)
Error 42: Symbol Undefined _GDALCreate
--- errorlevel 8
Я положил архив со всеми вещами здесь http://dlang.ru/gdal-d-binding.zip
UPD: Я получил GDAL запустить!
Я хочу добавить строку:
pragma( lib, "libgdal.lib" );
на пример, и он запускается. В скором времени я надеюсь добавить код на github.
составляя решение, которое мы собрали из комментариев здесь:
Во-первых, вам нужно сделать файл lib. implib
можно скачать здесь ftp.digitalmars.com/bup.zip и просто запустить его на dll, implib /s ldgal.lib ldgal.dll
создать библиотеку импорта.
Как только это будет сделано, вам нужно добавить его в сборку. Есть два способа сделать это: добавить ldgal.lib
в конце командной строки для dmd (без каких-либо других ключей просто добавьте файл, dmd увидит, что это .lib и сделает правильные вещи) или добавьте pragma(lib, "ldgal");
в ваш основной исходный файл.