2009-04-23 16 views
0

今、私はエラーをgetingよ:SQLite3オブジェクトが理解できませんか?

1> C:\開発\ document_manager \ document_manager \ storage_manager.h(7):エラーC2079: 'STORAGE_MANAGER :: DBは' 未定義の構造体 'sqlite3の'

を使用しています

#pragma once 
#include "sqlite3.h" 
class storage_manager 
{ 
    sqlite3 db; 
    sqlite3** db_pp; 
public: 
    void open() 
    { 
     sqlite3_open("data.db", db_pp); 
    } 
}; 

旧質問と

: こんにちは皆さん。 http://www.sqlite.org/download.htmlからsqlite-amalgamation-3_6_13.zipをダウンロードしましたが、プロジェクトでコンパイルできません。

c:\pathtoproject\sqlite3.c(11337) : error C2440: '=' : cannot convert from 'void *' to 'char *' 
     Conversion from 'void*' to pointer to non-'void' requires an explicit cast 

c:\pathtoproject\sqlite3.c(12023) : error C2440: '=' : cannot convert from 'void *' to 'sqlite3_int64 *' 
     Conversion from 'void*' to pointer to non-'void' requires an explicit cast 

プロジェクトを正しくコンパイルするには何が必要ですか?ありがとう!

編集: 私はCでプログラム全体をコンパイルしたくないですが、私は3つのファイルをcでコンパイルしたいだけですが、これは可能ですか?

EDIT:FIXED!私は新しいプロジェクトを作りました。

+0

プログラム全体をC言語でコンパイルしたくないので、3つのファイルをcとしてコンパイルしたいのですが、これは可能ですか? –

+0

はい、私の答えをチェックしてください。個々のファイルをCとしてコンパイルするように指定することができ、プロジェクト全体にする必要はありません。 – jalf

答えて

1

C++コンパイラを使用してCプログラムをコンパイルしようとしているようです。有効なC++でもある多くのCコードがありますが、それらは異なる言語です。

コンパイラには、Cコードをコンパイルするためのスイッチや設定があります。コンパイラのドキュメントを確認してください。

0

コンパイラは何をすべきか教えてくれませんか?

void *pv = /* some value */; 
char *pc = (char*) pv; 

これはもちろんCでは問題ありませんが、C++の問題です。

+0

私は明示的なキャストを追加するためにsqliteの15000以上の行を行きたいとは思わないので、VC++をどのようにしてファイルをCコードファイルとして解釈させるのですか? –

+0

[プロジェクトのプロパティ]> [C/C++]> [詳細設定]> [コンパイル]> [Cコードとしてコンパイル] – dirkgently

1

ファイルをC++ではなくCコードとしてコンパイルする必要があります。 プロジェクトまたは.cファイルだけを右クリックし、プロパティで、C++ではなくCとしてコンパイルするように設定されていることを確認してください。 (この設定は、プロジェクト全体ではなくファイルに対してのみ設定することをお勧めします)

+0

sqlite3.cファイルはCとしてコンパイルするようにすでに設定されています。どうすればよいですか? –

+0

私はそれを期待しています(.cファイルではデフォルトでCに設定する必要があります)が、それは奇妙です。私のVC2k8はそれをうまくコンパイルします。あなたは#cファイルを直接#includeしているわけではありませんか? – jalf

関連する問題