2014-11-23 3 views
0

내 프로젝트에 sqlite3.c 파일을 추가했습니다. #가 포함됩니다. 여기에 코드입니다 :Visual Studio C++ 2013에서 SQLite 컴파일 .c 파일에 오류가 발생합니다.

#include <sqlite3.h> 
using namespace std; 

int main() 
{ 

    return 0; 
} 

내가 프로그램을 컴파일하고 다음과 같은 오류가 발생합니다 :

1>..\..\..\..\..\..\..\libraries\sqlite-amalgamation-3080702\sqlite3.c(15705): error C2440: '=' : cannot convert from 'void *' to 'char *' 
1>   Conversion from 'void*' to pointer to non-'void' requires an explicit cast 
1>..\..\..\..\..\..\..\libraries\sqlite-amalgamation-3080702\sqlite3.c(19741): error C2440: '=' : cannot convert from 'void *' to 'sqlite3_mutex *' 
1>   Conversion from 'void*' to pointer to non-'void' requires an explicit cast 
1>..\..\..\..\..\..\..\libraries\sqlite-amalgamation-3080702\sqlite3.c(20665): error C2440: '=' : cannot convert from 'void *' to 'char *' 
1>   Conversion from 'void*' to pointer to non-'void' requires an explicit cast 
1>..\..\..\..\..\..\..\libraries\sqlite-amalgamation-3080702\sqlite3.c(20677): error C2440: '=' : cannot convert from 'void *' to 'char *' 
1>   Conversion from 'void*' to pointer to non-'void' requires an explicit cast 
1>..\..\..\..\..\..\..\libraries\sqlite-amalgamation-3080702\sqlite3.c(21142): error C2440: '=' : cannot convert from 'void *' to 'char *' 
1>   Conversion from 'void*' to pointer to non-'void' requires an explicit cast 
1>..\..\..\..\..\..\..\libraries\sqlite-amalgamation-3080702\sqlite3.c(21256): error C2440: '=' : cannot convert from 'void *' to 'char *' 
1>   Conversion from 'void*' to pointer to non-'void' requires an explicit cast 
1>..\..\..\..\..\..\..\libraries\sqlite-amalgamation-3080702\sqlite3.c(21411): error C2440: '=' : cannot convert from 'void *' to 'char *' 

그러나 머리글 또는 파일을 찾을 수 없다는 오류가 없습니다. 모든 것이 발견되고 오류는 방금 위에 출력됩니다

+6

으로 설정합니다. C 코드를 C++ 코드로 컴파일하는 것처럼 들립니다. 그러지 마. –

+1

죄송합니다. 정확히 동일하게 : 귀하의 코드 + sqllite.c, MSVC2013 모든 것이 잘 컴파일됩니다. 어떤 컴파일러를 사용합니까? 컴파일 옵션은 무엇입니까? – Christophe

+0

@CaptainOblious 만약 C로 컴파일하면 다음과 같은 오류가 발생합니다 : '1> cl : 명령 줄 오류 D8045 : C 파일 '.. \ .. \ .. \ .. \ .. \ .. \ .. \ libraries \ sqlite-amalgamation-3080702 \ sqlite-amalgamation-3080702 \ sqlite3.c '/ clr 옵션을 사용합니다 .' –

답변

3

해결책을 찾았습니다. C 코드를 C++로 컴파일했지만, 그것을 변경하는 것만으로는 충분하지 않았습니다.

나는 미래 방문자를 위해 쓰기 :

첫째, 파일의 (전용 파일) 속성을 변경했다. 파일을 마우스 오른쪽 단추로 클릭하고 속성을 선택하고 Advanced을 선택한 다음 Compile As을 선택하고 C (기본값도 C++도 아님)으로 설정합니다.

그런 다음 .c 파일이 clr없이 컴파일되었는지 확인해야합니다. 음, 같은 C/C++ 메뉴 세트에서 "Common Langugae Runtime Support"을 선택하고 No Support....

관련 문제