2017-02-25 10 views
0

carrayロード可能な拡張子をsqlite3シェルで使用しようとしていますが、恐ろしいメッセージが表示されます。Error: %1 is not a valid Win32 application.これはsqliteの問題なのかどうかわかりません。私はすでに公式のドキュメントやいくつかの関連する質問(例えばhere)を読んでいますが、これらのリソースによればが表示されています。私はすでにすべてのことを正しくやっていることをが示しています。sqliteでcarray loadable拡張子を使用する方法

carrayソースコードをダウンロードしました。compiledはMSVCで正常にダウンロードできました。コンパイルオプションは、 "\のSRC" でsqlite3ext.hsqlite3.hへのパスを含む、ここに示されています。

cl carray.c /I..\src /link /dll /out:carray.dll 

これが生成します。carray.dllcarray.objcarray.lib、およびcarray.exp。 sqlite3のシェルで

がコンパイルされたコードと同じディレクトリに始めた、私は次のエラーを取得する - コンパイル拡張ロードするには、いくつかの異なる方法を試みる:

C:\SQLite\src\ext>sqlite3 
SQLite version 3.16.2 2017-01-06 16:32:41 
Enter ".help" for usage hints. 
Connected to a transient in-memory database. 
Use ".open FILENAME" to reopen on a persistent database. 

sqlite> .load carray       ----- Try without the extension. 
Error: %1 is not a valid Win32 application. 

sqlite> .load carray.dll      ----- Oh, I should use the extension. 
Error: The specified module could not be found. 

sqlite> .load ./carray       ----- OK...maybe? Nope. 
Error: %1 is not a valid Win32 application. 

sqlite> SELECT load_extension('./carray.dll'); ----- Time to ask SO. 
Error: The specified module could not be found. 

を私は別のオプションを使用して再コンパイルしてみましたシステムアーキテクチャーを指定するには同じエラーが発生します。何かヒント?

システム詳細:SQLiteの3.16.2、Windowsの10の64ビット、MSのVisual Studio 14(2015)

答えて

0

私はあなたがやったようにcl carray.c /I..\src /link /dll /out:carray.dllcarrayをコンパイルしようとしました。そして.load carrayは問題なく私のために働く。

私はたぶん、あなたは、x64およびsqlite3.exeの32ビット版用のclを使用している(sqlite3.exeは、32ビットアプリケーションです。)

http://sqlite.org/download.htmlからダウンロードしたコマンドラインツールを使用していますか? 「VS2015 x64ネイティブツールコマンドプロンプト」の代わりに「Develoeprコマンドプロンプトfor VS2015」を使用してみてください。したがってwhere cl...\bin\amd64\cl.exeの代わりに...\bin\cl.exeのようなものを出力します。

関連する問題