无法编译GtkD SourceView代码
发布时间:2020-12-13 23:23:15 所属栏目:Linux 来源:网络整理
导读:我是gtk编程和d的新手,并使用gtkd源代码学习.当我尝试编译下面的代码[我在arch linux上使用dmd-2.060和gtkd-2.0]时. /* Modified sourceview demo for learning gtk programming in d*/pragma(lib,"gtkd");pragma(lib,"gtkdsv");pragma(lib,"dl");import gtk
我是gtk编程和d的新手,并使用gtkd源代码学习.当我尝试编译下面的代码[我在arch
linux上使用dmd-2.060和gtkd-2.0]时.
/* Modified sourceview demo for learning gtk programming in d */ pragma(lib,"gtkd"); pragma(lib,"gtkdsv"); pragma(lib,"dl"); import gtk.MainWindow; import gtk.Main; import gtk.Widget; //import gtk.TextView; import gsv.SourceView; import std.stdio; import std.file; /** * Demos for SourceView. * TODO on gsv: override methods from TextView,TextBuffer,etc */ class HelloWorld : MainWindow { SourceView sourceView; //TextView textView; this() { super("GtkD SourceView"); setBorderWidth(10); add(getSourceView()); setDefaultSize(640,400); showAll(); } private Widget getSourceView() { sourceView = new SourceView(); return sourceView; //textView = new TextView(); //return textView; } } void main(string[] args) { Main.init(args); new HelloWorld(); Main.run(); } 我得到这样的错误 /usr/lib/libgtkdsv.a(SourceCompletionInfo.o):(.data+0x140): undefined reference to `_D3gtk8TextView12__ModuleInfoZ' /usr/lib/libgtkdsv.a(SourceGutterRenderer.o):(.data+0xe8): undefined reference to `_D3gtk8TextView12__ModuleInfoZ' /usr/lib/libgtkdsv.a(SourceGutterRenderer.o): In function `_D3gsv20SourceGutterRenderer20SourceGutterRenderer7getViewMFZC3gtk8TextView8TextView': (.text._D3gsv20SourceGutterRenderer20SourceGutterRenderer7getViewMFZC3gtk8TextView8TextView+0x7e): undefined reference to `_D3gtk8TextView8TextView7__ClassZ' /usr/lib/libgtkdsv.a(SourceGutterRenderer.o): In function `_D3gsv20SourceGutterRenderer20SourceGutterRenderer7getViewMFZC3gtk8TextView8TextView': (.text._D3gsv20SourceGutterRenderer20SourceGutterRenderer7getViewMFZC3gtk8TextView8TextView+0x94): undefined reference to `_D3gtk8TextView8TextView6__ctorMFPS4gtkc8gtktypes11GtkTextViewZC3gtk8TextView8TextView' collect2: error: ld returned 1 exit status --- errorlevel 1 但是当我评论SourceView相关代码并取消注释TextView相关代码时,它编译并运行正常. 注意:此代码来自sourceView gtkd demos目录下的SVTest.d文件. 编辑:我正在做dmd SVTest.d编译,这给了我这个错误,现在我做了 更新:确实pragma命令很重要,我改变了pragma pragma(lib,"dl"); 现在我可以做 dmd main.d 这是我原本想要做的. 解决方法
我相信链接器标志的顺序很重要. gtkd加载共享对象,并且需要libdl,因此-l-Ldl需要在列表中排在第一位. (你在终端上做过的)
尝试移动pragma(lib,“dl”);到第一个地方,看看是否有所作为. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |