gpt4 book ai didi

windows - 静态链接 SQLite 与 DMD (Windows x86)

转载 作者:IT王子 更新时间:2023-10-29 06:29:01 24 4
gpt4 key购买 nike

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

objconv:

  • 尝试转换使用 GCC 创建的 lib 文件,导致出现 undefined symbol ,例如 __divdi3 和 __muldi3,无法解决此问题。

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

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

implib:

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

coffimplib:

  • 如果我在 VC++ 创建的库文件上使用 coffimplib,程序会生成一个几乎为空的文件 (~2KB),其中仅包含垃圾(即根本没有符号,大部分只是“空”值)。

  • 如果我对 GCC 创建的库执行相同的操作,coffimplib 会提示“不是导入库”并且不会生成任何转换后的库文件。

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

注意:我不想使用 DLL,而是与 sqlite 静态链接(出于可执行文件大小的考虑)。

最佳答案

尝试将 implib/system 开关一起使用。

关于windows - 静态链接 SQLite 与 DMD (Windows x86),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13443193/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com