x64 版の sqlcipher 対応 dll をビルドしてくださいと言われて、気分はもにょーん。
sqlcipher-4.2.0 をダウンロードしてきて、ActiveTcl の32bit版、バージョン古い方を入れて
C:\Work\sqlcipher-4.2.0> nmake -f makefile.msc SQLITE_HAS_CODEC=1 USE_CRT_DLL=1 PLATFORM=x64ってやったら、
sqlite3.c(30924): error C2061: 構文エラー: 識別子 'CRITICAL_SECTION' sqlite3.c(30931): error C2059: 構文エラー: '}' sqlite3.c(30986): error C2079: 'winMutex_staticMutexes' が 未定義の struct 'sqlite3_mutex' で使用しています。 sqlite3.c(30999): fatal error C1903: 直前のエラーを修復できません。コンパイルを中止します。となって、ビルドできない。
Makefile.msc を追っていくと、ライブラリのパスが間違ってる、リンクオプションがメタメタ、その他諸々設定が反映されず、とにかくビルドできるような状況にもっていくのが大変そうだった。
そこで、nmake して生成された sqlite3.c sqlite3.h sqlite3ext.h sqlite3session.h から DLL をビルドした方が簡単な気がして試してみた。
空のDLLプロジェクトを作成
プリプロセッサの定義として
SQLITE_API=__declspec(dllexport) SQLITE_HAS_CODEC=1を追加すればOKだ。 vcpkg を導入済みであれば、openssl もあっけなくリンクされてくる。
x64 は、stdcall 形式がなく cdecl 形式で、以下のようにエクスポートされている。
0 件のコメント:
コメントを投稿