成功せずに sqlite3 と静的にリンクしようとしました。「etc.c.sqlite3」ヘッダーと sqlite3 アマルガムを使用しています。.lib ファイルを作成するために、VC++ と MinGW-gcc の両方を試しましたが、どちらもソース ファイルを正常にコンパイルしましたが、どちらも COFF オブジェクト形式を生成します (DMD が使用する optlink は OMF で動作します)。「digitalmars.D」に関する大量の投稿を読んだ後、いくつかの異なる解決策を試しました。
GCC で作成した lib ファイルを変換しようとしたところ、__divdi3 や __muldi3 などの未定義のシンボルが生成され、これを解決できませんでした。
また、sqlite3.oファイルを* .objに変換してから、digitalmars 'lib.exe'を使用するためにこれを試みました-同様に失敗しました
VC++ で生成されたライブラリで objconv を実行しようとすると、「SQLite.lib はインポート ライブラリです」という理由で失敗します。
- プリコンパイル済みの DLL を sqlite.org からダウンロードして implib を使用すると、lib ファイルが生成されますが、静的ライブラリにリンクしても、同じ sqlite エラー (未定義記号
_sqlite3_open
,_sqlite3_errmsg
,_sqlite3_close
...
VC++ で作成されたライブラリ ファイルで coffimplib を使用すると、プログラムはほとんど空のファイル (~2KB) を生成します。このファイルにはゴミ (つまり、シンボルはまったくなく、ほとんどが 'null' 値のみ) しか含まれていません。
GCCで作成したライブラリで同じことをすると、coffimplibは「インポートライブラリではありません」と文句を言い、変換されたライブラリファイルは生成されません。
DMC を使用して sqlite3 合併をコンパイルすると、大量のエラーが発生してコンパイルが失敗します。ここで私はどこにも行き詰まっていますが、これを解決するためのアイデアやヒントはありますか?
注: DLL を使用したくありませんが、sqlite と静的にリンクします (実行可能サイズの問題のため)。