如何在 Eclipse java 版本中添加 sqlite 库?
How to add a sqlite library in Eclipse java edition?
我正在使用我用 Eclipse(java 版)编译的 cocos2dx c++ android 项目。
在我尝试使用 sqlite3 之前,一切都运行良好。
我很确定代码是正确的。
sqlite3 *pdb = NULL;
int result;
std::string path = FileUtils::getInstance()->getWritablePath();
path.append("mydb.db");
FILE* file = fopen(path.c_str(), "r");
if (file == nullptr) {
CCLOG("no such file");
long size = 0;
const char* data = (char*) FileUtils::getInstance()->getFileData("mydb.db", "rb", &size);
file = fopen(path.c_str(), "wb");
fwrite(data, size, 1, file);
CC_SAFE_DELETE_ARRAY(data);
}
result = sqlite3_open(path.c_str(),&pdb);
if (result != SQLITE_OK)
CCLOG("OPEN FAILED");
else
CCLOG("OPEN WORKED");
char **re;
int r,c;
sqlite3_get_table(pdb,"select * from mytable", &re, &r, &c, NULL);
CCLOG("num of rows is %d, num of columns is %d", r, c);
我收到这些错误
"undefined reference to 'sqlite3_get_table'"
"undefined reference to 'sqlite3_open'"
我在 win32 构建中遇到了类似的问题,通过在 Visual Studio 中添加 sqlite 库解决了这个问题。
猜猜现在是类似的问题,但我不知道如何在 Eclipse 中解决它?
感谢 sithereal 的帮助。
不确定我的 Android.mk 文件有什么问题,但我删除了文件并使用了另一个解决问题的模板。
我的 Android.mk 现在看起来像这样。
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
$(call import-add-path,$(LOCAL_PATH)/../../cocos2d)
$(call import-add-path,$(LOCAL_PATH)/../../cocos2d/external)
$(call import-add-path,$(LOCAL_PATH)/../../cocos2d/cocos)
LOCAL_MODULE := cocos2dcpp_shared
LOCAL_MODULE_FILENAME := libcocos2dcpp
LOCAL_SRC_FILES := hellocpp/main.cpp \
../../Classes/AppDelegate.cpp \
../../Classes/x.cpp \
../../Classes/y.cpp \
../../Classes/HelloWorldScene.cpp\
../../Classes/sqlite3.c
LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../Classes
LOCAL_WHOLE_STATIC_LIBRARIES := cocos2dx_static cocosdenshion_static cocos_extension_static
include $(BUILD_SHARED_LIBRARY)
$(call import-module,.)
一切正常。
我正在使用我用 Eclipse(java 版)编译的 cocos2dx c++ android 项目。 在我尝试使用 sqlite3 之前,一切都运行良好。
我很确定代码是正确的。
sqlite3 *pdb = NULL;
int result;
std::string path = FileUtils::getInstance()->getWritablePath();
path.append("mydb.db");
FILE* file = fopen(path.c_str(), "r");
if (file == nullptr) {
CCLOG("no such file");
long size = 0;
const char* data = (char*) FileUtils::getInstance()->getFileData("mydb.db", "rb", &size);
file = fopen(path.c_str(), "wb");
fwrite(data, size, 1, file);
CC_SAFE_DELETE_ARRAY(data);
}
result = sqlite3_open(path.c_str(),&pdb);
if (result != SQLITE_OK)
CCLOG("OPEN FAILED");
else
CCLOG("OPEN WORKED");
char **re;
int r,c;
sqlite3_get_table(pdb,"select * from mytable", &re, &r, &c, NULL);
CCLOG("num of rows is %d, num of columns is %d", r, c);
我收到这些错误
"undefined reference to 'sqlite3_get_table'"
"undefined reference to 'sqlite3_open'"
我在 win32 构建中遇到了类似的问题,通过在 Visual Studio 中添加 sqlite 库解决了这个问题。 猜猜现在是类似的问题,但我不知道如何在 Eclipse 中解决它?
感谢 sithereal 的帮助。 不确定我的 Android.mk 文件有什么问题,但我删除了文件并使用了另一个解决问题的模板。
我的 Android.mk 现在看起来像这样。
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
$(call import-add-path,$(LOCAL_PATH)/../../cocos2d)
$(call import-add-path,$(LOCAL_PATH)/../../cocos2d/external)
$(call import-add-path,$(LOCAL_PATH)/../../cocos2d/cocos)
LOCAL_MODULE := cocos2dcpp_shared
LOCAL_MODULE_FILENAME := libcocos2dcpp
LOCAL_SRC_FILES := hellocpp/main.cpp \
../../Classes/AppDelegate.cpp \
../../Classes/x.cpp \
../../Classes/y.cpp \
../../Classes/HelloWorldScene.cpp\
../../Classes/sqlite3.c
LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../Classes
LOCAL_WHOLE_STATIC_LIBRARIES := cocos2dx_static cocosdenshion_static cocos_extension_static
include $(BUILD_SHARED_LIBRARY)
$(call import-module,.)
一切正常。