2015-10-06 53 views
0

更改 'PGNO' 的意思刚刚下载的unqlite.cunqlite.h,在Eclipse中创建一个新项目,复制从unqlite.org网站的一个例子,我发现了以下错误:unqlite.h:651:15:错误:来自 '的typedef sxu64 PGNO'[-fpermissive]

21:37:51 **** Build of configuration Debug for project nosql **** 
make all 
Building file: ../main.cpp 
Invoking: Cross G++ Compiler 
g++ -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"main.d" -MT"main.d" -o "main.o" "../main.cpp" 
In file included from ../main.cpp:49:0: 
../unqlite.h:661:8: error: declaration of ‘pgno unqlite_page::pgno’ [-fpermissive] 
pgno pgno; /* Page number for this page */ 
^ 
../unqlite.h:651:15: error: changes meaning of ‘pgno’ from ‘typedef sxu64 pgno’ [-fpermissive] 
typedef sxu64 pgno; 
^ 
subdir.mk:25: recipe for target 'main.o' failed 
make: *** [main.o] Error 1 
21:37:51 Build Finished (took 171ms) 

这本来是简单的,但我也没有什么事情的线索...有没有人试过这种unqLite KV商店?

我使用

gcc版本4.9.2(Debian的4.9.2-10)

干杯

ttkdroid

回答

2

包括unqlite.h时会出现此问题一个C++文件,并用g ++编译它。你有两个解决方案来解决这个问题:

pgno pgno; /* Page number for this page */

通过

::pgno pgno; /* Page number for this page */

这将与g ++编译器以及其他C++编译器一起使用。当然,你不能用这个编辑过的头文件用C编译器编译unqlite.c。

如果您想了解更多有关此错误,这可能是一个很好的链接:typedef changes meaning

有一个好的一天!

+0

解决了“pgno”的问题,但这个东西仍然不能用C++ ... – TTKDroid

+0

你将不得不做一些努力让它工作是的。使用C编译器编译C文件,修改上述内容,并用extern'C'{unqlite.h}包围您的包含文件。我相信这是全部。请参阅[此链接](http://stackoverflow.com/questions/31039015/error-lnk2019-unresolved-external-symbo-unqlite)。 – woldendans