2015-10-06 56 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