您好我已经构建了一个使用ADO连接到MS ACCESS 2007的C ++应用程序:我的笔记本电脑上的提供程序是MICROSOFT.ACE.OLEDB.12.0
,运行Windows 7 Professional 64位。
一切都很好,就像魅力一样。
问题是:如果我将此应用程序与数据库一起移动到运行Windows x86的另一台机器上,它就不起作用了!请不要建议数据库的位置是问题。
如果我将它移至win x64,请记住我在x64机器上将项目构建为win32应用程序。
如果我在win32机器上构建代码,它可以在那里和win 64机器上运行。
所以我猜问题是因为win64上的ado dll不能在win32上运行。
那我怎么弄清楚:在Win64上构建一个适用于win32和win64操作系统的C ++ ado应用程序?
以下是代码示例:
#include <afxdisp.h>
#include <comdef.h>
#import "C:\\Program files\\Common Files\\System\\ado\\msado15.dll"\
no_namespace\
rename("EOF", "adoEOF")
try{
bool m_IsConnectionOpen = false;
_ConnectionPtr pConnection;
HRESULT hr = pConnection.CreateInstance(__uuidof(Connection));
if(SUCCEEDED(hr)){
MessageBox(NULL, "Create Instance Succeeded!", 0, 0);
hr = pConnection->Open(_bstr_t(L"Provider=Microsoft.ACE.OLEDB.12.0;\
Data Source=bin.accdb;"),
_bstr_t(""),
_bstr_t(""),
adModeUnknown);
if(SUCCEEDED(hr)){
MessageBox(NULL, "Connection Succeeded!", 0, 0);
m_IsConnectionOpen = TRUE;
}
else
MessageBox(0, "Connection failed", 0,0);
}
catch(_com_error& e){
MessageBox(NULL, (LPSTR)e.Description(), 0, 0);
}
catch(...){
MessageBox(NULL, "Unhandled Exception!", 0, 0);
}
CreateInstance
答案 0 :(得分:0)
我想知道为什么人们如此消极?:当他们无法明确解释他们vote down
时!
我设法以这种方式解决这个问题:
1-转到桌面计算机窗口32位并复制文件夹:
C:\program files\common files\system\ado
到我的笔记本电脑的windows7 64位并粘贴到我的项目中,所以我的项目看起来像:
C:\users\myUserName\Desktop\AdoProj\ado
2-现在当我导入dll时,我导入了新的(在我的项目文件夹中):
#import C:\\users\\myUserName\\Desktop\\AdoProj\\ado\\msado15.dll \
no_namespace \
rename("EOF", "adoEOF")
现在该程序在win64和win32系统上运行但是我不认为这是一个正确的解决方案&#34;在win64和#34;中使用win32 dll;那有什么明确的解决方案吗?