求救,DAO数据库操作代码转移到动态库中后出现问题
一个查询窗口类, 原先是直接写在exe工程中的,现在为了更新方便将整个对话框类转移到单独的动态库中实现(MFC扩展Dll), 现在发现所有的DAO操作都会出现异常CDaoException, 并且异常捕获代码会出现内存访问错误: 如:
CString strDb = AppPathString(str);
CDaoDatabase db;
try
{
db.Open(strDb);
}
catch (CDaoException *e) // 统计数据库不存在, 创建新的数据库文件
{
//AfxMessageBox(e->m_pErrorInfo->m_strDescription, MB_OK);
DeleteFile(strDb);
CreateStatDatabase(strDb, m_TestMode);
db.Open(strDb);
e->Delete();
}
AfxMessageBox一句无法打印出异常信息,报内存访问错误.
若数据库文件strDb存在,那么本不应该出现异常,但运行结果不变,还是会出现CDaoException异常
创建数据库时也是同样:
try
{
CDaoDatabase db;
db.Create(strFileName); // 此处出现异常
}
catch (CDaoException *e)
{
...
}
以上这些Dao操作代码原本在exe工程中已经使用很久了,是否在mfc扩展dll中使用dao有特殊之处?
在exe工程中,我是通过AfxGetModuleState()->m_dwVersion = 0x0601; 来使用dao3.6版本