これは、ここでこの質問にリンクされています:GtkD(D言語のGtk +バインディング)なぜそれをコンパイルするのですか?
Ubuntu 12.04でDプログラミング言語でGtkDを使用していますが、コンパイルされたライブラリをプログラムに静的にリンクしようとして立ち往生しています。GtkDがコンパイルされると、3つのライブラリがあります
- libgtkd.a
- libgtkdgl.a
- libgtkdsv.a
これらを実行した後、make install
これらは/usr/local/lib/
フォルダーに配置され、GtkDソースは/usr/local/includes/d/
フォルダー内に配置されます。また、ソースをファイルにコンパイルし、makeスクリプトがデフォルトでこれを行わないため、*.di
それらを関連するフォルダーに配置しました。/usr/local/includes/d/
これが私がコンパイルしたいソースです。
pragma(lib, "/usr/local/lib/libgtkd.a");
import gtk.MainWindow;
import gtk.Label;
import gtk.Main;
void main(string[] args)
{
Main.init(args);
MainWindow win = new MainWindow("Hello World!");
win.setDefaultSize(200, 100);
win.add(new Label("Hello World"));
win.showAll();
Main.run();
}
これが私が使用するコンパイラコマンドです:
rdmd -L-ldl hello_world.d
エラーは次のとおりです。
/usr/local/lib/libgtkd.a(Loader.o): In function `_D4gtkc6Loader12pLoadLibraryFAyaE4gtkc6Loader4RTLDZPv':
src/gtkc/Loader.d:(.text._D4gtkc6Loader12pLoadLibraryFAyaE4gtkc6Loader4RTLDZPv+0x28): undefined reference to `dlopen'
src/gtkc/Loader.d:(.text._D4gtkc6Loader12pLoadLibraryFAyaE4gtkc6Loader4RTLDZPv+0x31): undefined reference to `dlerror'
/usr/local/lib/libgtkd.a(Loader.o): In function `_D4gtkc6Loader10pGetSymbolFPvAyaZPv':
src/gtkc/Loader.d:(.text._D4gtkc6Loader10pGetSymbolFPvAyaZPv+0x23): undefined reference to `dlsym'
src/gtkc/Loader.d:(.text._D4gtkc6Loader10pGetSymbolFPvAyaZPv+0x2c): undefined reference to `dlerror'
/usr/local/lib/libgtkd.a(Loader.o): In function `_D4gtkc6Loader14pUnloadLibraryFPvZi':
src/gtkc/Loader.d:(.text._D4gtkc6Loader14pUnloadLibraryFPvZi+0x9): undefined reference to `dlclose'
collect2: ld returned 1 exit status
--- errorlevel 1
shell returned 1
私が間違っていることについて何か考えはありますか?ldエラーのように見えますが、それは正しくリンクされていますか?