VS2013 编译生成的MFC exe文件在其他未安装VS的电脑上运行报连接不上数据库

liuxingyan1121 2016-06-19 03:38:18
用VS2013写的MFC程序,MFC用ado连接了access数据库,生成exe后,将exe与.mdb的数据库文件一起拷到其他电脑运行,该电脑也是64位,安装了access,但是运行后弹出连接数据库失败,最后点击关闭后出现debug error
::CoInitialize(NULL);
m_pConnection.CreateInstance(_uuidof(Connection));
try
{
m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\\HistoryFault.mdb", "", "", adModeUnknown);
}
catch (_com_error e)
{
CString errormessage;
errormessage.Format("连接数据库失败!\r\n错误信息:%s", e.ErrorMessage());
AfxMessageBox(errormessage);///显示错误信息
return FALSE;
}
...全文
1174 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
liuxingyan1121 2016-06-20
  • 打赏
  • 举报
回复
问题解决了,要用相对路径连接access, CString sPath,m_strPath; GetModuleFileName(NULL, sPath.GetBufferSetLength(MAX_PATH + 1), MAX_PATH); sPath.ReleaseBuffer(); int len = sPath.ReverseFind('\\') + 1; m_strPath = sPath.Left(len); CString strConnection = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + m_strPath + "data\\" + "HistoryFault.mdb"; try { m_pConnection->Open(_bstr_t(strConnection),"", "", adModeUnknown); } 但是生成的exe在32位系统上运行界面变大了,下面部分被桌面挡住了,搜了一下要配置VS的平台,但是我的没有x86选项,只有x64和arm,这个怎么解决
赵4老师 2016-06-19
  • 打赏
  • 举报
回复
在64位Windows下: 64位exe和dll在目录c:\windows\system32目录下; 32位exe和dll在目录c:\windows\syswow64目录下; 所以要注意: 在win64位系统下注册32位ocx或dll需要将32位ocx或dll拷贝到c:\windows\syswow64\目录下。 且注册要用c:\windows\syswow64\regsvr32 xxxxxxx.ocx或dll 在win64位系统下设置32位程序使用的数据库别名要用c:\windows\syswow64\cliconfg.exe 在win64位系统下设置32位程序使用的系统DSN要用c:\windows\syswow64\odbcad32.exe
zgl7903 2016-06-19
  • 打赏
  • 举报
回复
m_pConnection.CreateInstance 要判断返回值是否是 S_OK 可以在其它机器上安装VS的 远程调试器 进行远程调试

4,011

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 数据库
社区管理员
  • 数据库
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧