0
  1. ming gccを使用したdev c ++ IDEを使用しています(よくわかりません)
  2. win32 c アプリケーションで sqlite3 を使用したかった
  3. sqlite3.dll と sqlite3.dev をダウンロードし、dlltool を使用して libsqlite3.a のような .a ファイルを作成し、dev cpp の lib フォルダーに貼り付けて、このパスをプロジェクト オプション -> パラメーターに追加しました。
  4. ヘッダー ファイル sqlite3.h をインクルード フォルダーにコピーしました (これは別の Web サイトから取得しました - http://www.opensource.apple.com/source/SQLite/SQLite-74/derived_source/sqlite3.h )
  5. プログラムを実行したところ、「コンピューターに sqlite3.dll が見つからないため、プログラムを開始できません」というメッセージが表示されました。
  6. だから私は自分の作業ディレクトリにsqlite3.dllをコピーし、それが働いた

しかし

コンパイル中にsqlite.*を静的にする方法は?

つまり、libsqlite3.a を含めることで、最終的な exe は外部の dll に依存しないと考えました。

だから私はdllを必要としない方法でコンパイルする方法を知りたいです。そうすることで、私のWindowsプログラムがスタンドアロンになります。

.a ファイルの代わりに .lib ファイルを作成する必要がありますか?

回答とコメントの後に編集:さらに、devpakは正常に動作しています...それでも、プロジェクトにファイルを含める方法または.aファイルを作成する方法を知りたかったので、一部のコンポーネントがdevpakを提供しない場合、これはコンパイルする必要がある方法です..そうではありませんか?

CLによる回答と2つのコメントの後に私が何をしたかを示す編集

これは、sqlite.cをプロジェクトリストに追加した方法です

ここに画像の説明を入力

コンパイルログはこちら

コンパイラ: デフォルトのコンパイラ

Makefile のビルド: "C:\Users\jayapalc\Documents\test-sqlite\Makefile.win"

メイクを実行しています...

make.exe -f "C:\Users\jayapalc\Documents\test-sqlite\Makefile.win" すべて

g++.exe -c sqlite3.c -o sqlite3.o -I"lib/gcc/mingw32/3.4.2/include" -I"include/c++/3.4.2/backward" -I"include/c++/3.4. 2/mingw32" -I"include/c++/3.4.2" -I"include"

sqlite3.c: 関数 `void strftimeFunc(sqlite3_context*, int, sqlite3_value**)' 内:

sqlite3.c:14727: エラー: void*' tochar* からの無効な変換 '

sqlite.org/sqlite-amalgamation-3071502.zip で取得したファイルは

shell.c、sqlite3.h、sqlite3.c、sqlite3ext.h、および私は他の議論でshell.cが必要ないことを見ました...

その上、人々は gcc と g++ について話していました... .

4

2 に答える 2

1

プロジェクトにsqlite3.cファイルを含めるだけです。

このフィールドだけが必要で、C++ ではなく C としてコンパイルする必要があります。

どうやら、Dev-C++ では、C と C++ のソース ファイルを 1 つのプロジェクトに混在させることはできません。代わりに、C としてコンパイルsqlite3.cしてから、生成された .o ファイルを C++ プロジェクト (リンカ ページ) に含めることができます。

于 2013-02-13T15:13:03.967 に答える
1

Dev-C++ 自体を更新する以外に、これを試して sqlite.c を C ファイルとしてコンパイルします。

  • [プロジェクト] >> [プロジェクト オプション] >> [ファイル] に移動します。
  • 話している C ファイルを見つけます。「ファイルを C++ としてコンパイル」のチェックを外します。

これにより、g++.exe ではなく gcc.exe を呼び出す必要があることが Dev-C++ に通知されます。

プロジェクトに追加して自分で sqlite をコンパイルしたくない場合は、 -static フラグを GCC/G++ に渡して libsqlite.a を静的にリンクするように強制できます。

于 2013-02-14T11:36:36.457 に答える