就是这样一段代码    error = sqlite3_open(filename.c_str(), &m_db);
调用sqlite3.h的函数sqlite3_open.  在MFC中使用时,假如filename里含有中文的话,error就会返回14.
error 14在sqlite3.h中这样定义 #define SQLITE_CANTOPEN    14   /* Unable to open the database file */但是,放在lib里使用却是返回成功的. 绝对一样的代码,没加任何特别措施.请问是什么原因呢?

解决方案 »

  1.   

    我是规定要使用多字节的,用的编译器是VC2008在lib和mfc中都是使用多字节的.
      

  2.   

    你的db文件放在什么地方,在MFC中DB文件要放在Debug文件下
      

  3.   

    你的编译环境变了,那么要重新生成DELL文件和LIB文件,我从EVC下转到VC下是这样做的
      

  4.   

    原来在lib下也不一定行.要命的是在lib下有时行!!! 导致我出现了错觉唉  还是老老实实把字符串做转换再传入sqlite3库里吧
      

  5.   

    呵呵,楼主没仔细看过Sqlite3啊,如果是UNICODE,它有针对UNICODE的函数啊
    sqlite3_open16(szFile, &mpDB)
      

  6.   

    问题解决了,原来sqlite内部用的UTF8的字符格式,必须先做个转换,才能传进sqlite内部.但为什么在lib里可以用呢? 那是因为我试得不彻底,多试几个文件就也不行了