1,到http://sourceforge.net/projects/sqlite-wince/files/下载sqlite-wince-3.x下面的sqlite-wince-3.3.5
2. 创建一个Win32 Smart Device Project,项目名字为sqlite3,Application Type选择DLL,创建项目完成后,将所有sqlite-wince-3.3.5下面的文件拷贝到项目的目录(除了tclsqlite.c和shell.c这两个文件)
3. 设置project的一些属性,
首先将sqlite3.cpp改名为sqlite.c,并注释掉整个文件里面的代码,包括include的头文件,因为我们待会儿会按照C语言来编译,而不是C++,如果按照C++编译,会有很多语法错误,当然,你也可以逐条修改语法错误,然后编译(这个我没试过,应该没问题);另外,从项目中删掉stdafx.cpp,这个文件没用。
其次,将编译模式改为c模式(TC)。位置:Project->PropertIEs->Configuration PropertIEs->C/C++->Advanced->Compile As
再次,Project->PropertIEs->C/C++->@R_316_3013@ header->Create/Use @R_316_3013@ header: Not using @R_316_3013@ header 再次,Project->PropertIEs->linker->input->Module DeFinition file:输入“sqlite3.def” 再次,有可能会出现unresolved external symbol @__security_check_cookie@4这个链接错误,做如下 *** 作即可:Project->PropertIEs->C/C++->Code Generation, Buffer Security Check选择No 上述过程完成后即可得到一个sqlite3.lib和sqlite3.dll 4. 如果想使用c++封装,可以到下面下载:http://softvoile.com/development/CppSQLite3U/ 下面的代码是测试(代码是转载的) 4> 有了 sqlite DLL 及 Cppsqlite3U 后,便可以很方便地使用 sqlITE :(步骤3中,a链接页画下就有DEMO) 主要代码如下: #define file_DB_nameTEXT("unitech.db")// 获取程序当前路径 voID GetCurrentDirectory(CString & szPath) { wchar_tpBuf[ 256 ]; Getmodulefilename(NulL,pBuf, sizeof (pBuf) / sizeof (wchar_t)); szPath = pBuf; szPath = szPath.left(szPath.ReverseFind( ' // ' ) + 1 ); } voID CDemo2Dlg::Onbutton1() { CStringstrDbPath; GetCurrentDirectory(strDbPath); strDbPath += file_DB_name; Cppsqlite3DBdb; try { // 打开或新建一个数据库 db.open(strDbPath); // 判断表名是否存在 if (db.tableExists(L " tblTest " )) { AfxMessageBox(L " table:tblTestisexisted! " ); } else // 不存在 { AfxMessageBox(L " table:tblTestnotexisted! " ); // 新建表 db.execDML(L " createtabletblTest(empnovarchar(20),empnamevarchar(20)) " ); } // 插入一笔记录 db.execDML(L " insertintotblTestvalues('编号','姓名') " ); // 插入一笔记录 db.execDML(L " insertintotblTestvalues('精瑞电脑','Answer') " ); // 删除一笔记录 db.execDML(L " deletefromtblTestwhereempno='编号' " ); // 插入10笔记录(使用事务) TCHARbuf[ 256 ]; db.execDML(L " begintransaction; " ); for ( int i = 0 ;i < 10 ;i ++ ) { memset(buf, 0 , sizeof (buf)); wsprintf(buf,L " insertintotblTestvalues('no%d','name%d'); " ,i,i); db.execDML(buf); } db.execDML(L " committransaction; " ); // 更新一笔记录 db.execDML(L " updatetblTestsetempname='answer'whereempno='no1' " ); // 获取总笔数 int count = db.execScalar(L " selectcount(*)fromtblTest; " ); TCHARszCount[ 50 ]; memset(szCount, sizeof (szCount)); wsprintf(szCount,L " Count:%d " ,count); AfxMessageBox(szCount); // 获取每一笔 Cppsqlite3queryq = db.execquery(L " select*fromtblTest " ); while ( ! q.eof()) { AfxMessageBox(q.fIEldValue( 0 )); q.nextRow(); } q.finalize(); db.close(); AfxMessageBox(L " OK " ); } catch (Cppsqlite3Exceptionex) { AfxMessageBox(ex.errorMessage()); } } |
以上是内存溢出为你收集整理的将sqlite3编译成给WINCE使用的DLL,并封装成C++的步骤(使用VS2005)全部内容,希望文章能够帮你解决将sqlite3编译成给WINCE使用的DLL,并封装成C++的步骤(使用VS2005)所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)