当我编译一个需要D中的mondo库的程序时,我会被链接器中的一系列错误所震撼。最后两行是唯一可以远程读取的行:
collect2: error: ld returned 1 exit status
Error: linker exited with status 1
然而,在它之前的所有其他行基本上都说同样的事情:“未定义引用......”
在询问Stack Overflow之前,我已经完成了对这个问题的研究,但对其他人有用的东西似乎对我不起作用。 (当然,我不得不用C或C ++构建来查找这个问题,但我想它并没有太大的不同。)
互联网上其他地方的所有内容都说我需要在将它们编译为对象后链接我的库,但我相信我这样做并且仍然会收到错误。我使用的命令序列如下所示:
$ dmd -c ./source/mondo/source/* insert.d
然后
$ dmd insert.o mondo.o mongoc.o bsond.o
(除了insert.o之外的所有文件都来自./source/mondo/source / *)
我的程序的标题如下所示:
import mondo;
import bsond;
import mongoc;
我没有看到我怎么可能对编译器更加明确我想要的东西,但我似乎仍然得到这个错误。
注意:mondo需要mongo-c-driver才能工作。我编译该库没有任何问题。我尝试通过传递
来包含它-L-L/usr/local/lib
到DMD,但这也不起作用。事实上,我刚刚得到了该库中函数的一堆“未定义引用”错误!