静态链接SQLite和DMD(Windows x86)

Ell*_*ink 5 windows sqlite d dmd

我试图静态链接sqlite3但没有成功.我正在使用'etc.c.sqlite3'标题和sqlite3合并.为了创建.lib文件,我尝试了VC++和MinGW-gcc,这两个文件都成功编译了源文件 - 但它们都生成COFF对象格式(optlink,DMD使用,与OMF一起使用).在阅读了'digitalmars.D'上的大量帖子后,我尝试了几种不同的解决方案.

objconv:

  • 试图转换用GCC创建的lib文件,导致未定义的符号,如__divdi3和__muldi3,无法解决这个问题.

  • 还尝试将sqlite3.o文件转换为*.obj,然后使用digitalmars'lib.exe' - 也不成功

  • 在VC++生成的lib上尝试objconv失败,原因是:"SQLite.lib是一个导入库"

IMPLIB:

  • 如果我从sqlite.org下载预编译的DLL并使用implib,它会生成一个lib文件,但名称mangling似乎不匹配,因为即使我链接到静态库,我仍然会收到相同的sqlite错误(例如undefined符号_sqlite3_open,_sqlite3_errmsg,_sqlite3_close...

coffimplib:

  • 如果我在VC++创建的库文件上使用coffimplib,程序会生成一个几乎为空的文件(~2KB),它只包含垃圾(即根本没有符号,大多数只是'null'值).

  • 如果我对GCC创建的库执行相同操作,coffimplib会抱怨"不是导入库",并且不会生成转换后的库文件.

如果我使用DMC编译sqlite3合并,则编译失败会抱怨大量错误.所以我在这里,无处可去,有没有人有任何想法或提示可以解决这个问题?

注意:我不想使用DLL,但静态链接sqlite(对于可执行文件大小的问题).

Rob*_*bik 3

尝试implib/systemswitch 一起使用。