C++ 基于 WIN64 构建的 ADO 在 win32 操作系统上不起作用
C++ ADO built on WIN64 doesn't work on win32 OS
您好,我构建了一个使用 ADO 连接到 MS ACCESS 2007 的 C++ 应用程序:提供程序MICROSOFT.ACE.OLEDB.12.0
在我的笔记本电脑上运行 Windows 7 Professional 64 位。
一切都很好,就像一个魅力。
问题是:如果我将此带有数据库的应用程序移动到另一台运行 Windows x86 的计算机,它不起作用!请不要建议数据库的位置是问题所在。
-
如果我将其移动到 win x64,它可以工作,请记住,我在 x32 机器上将项目构建为 win64 应用程序。
-
如果我在 win32 机器上构建代码,它在那里和 win 64 机器上都可以工作。
-
所以我想问题是由于 win64 上的 ado dll 在 win32 上不起作用。
-
那么我该如何弄清楚:在win64上构建一个适用于win32和win64操作系统的C++ adoy应用程序?
下面是一个代码示例:
#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
我想知道为什么人们如此消极?:当他们无法提供明确的解释时,他们vote down
!
我设法以这种方式弄清楚:
1-转到我的台式计算机窗口32位并复制文件夹: C:program filescommon filessystemado
到笔记本电脑的 Windows7 64 位并粘贴到我的项目中,以便我的项目如下所示:
C:usersmyUserNameDesktopAdoProjado
2-现在,当我导入dll时,我导入了新dll(在我的项目文件夹中ado(:
#import C:\users\myUserName\Desktop\AdoProj\ado\msado15.dll
no_namespace
rename("EOF", "adoEOF")
现在该程序在win64和win32系统上运行,但我不认为这是一个正确的解决方案"在win32中使用win64 dlls"那么有什么明确的解决方案吗?
- Win32编译器选项和内存分配
- C++win32 API创建多个类似视口的窗口
- WM_CTLCOLORSTATIC从未在WIN32应用程序中触发
- 检测win32服务创建和删除的最佳方法
- 在C++中设置基于操作系统的文件路径
- WIN32:C++,为什么在WM_CLOSE上调用Messagebox函数程序正在冻结
- 将 win32 hbitmap 转换为 winrt softwarebitmap
- 使用 WIN32 API (C/C++) 对特定树视图项进行着色
- Alt+Enter 在 Win32 应用中,管理大小调整和分辨率
- VSCode C++ 编译的exe感染了Win32:TrojanX-gen[Trj]
- 从预处理器获取 Windows 版本(C++ Win32)
- Issues with Win32 ReadProcessMemory API
- Win32 发送输入鼠标移动滞后并冻结
- 如何从 Win32 C++ 应用程序输出到父控制台窗口?
- C++线程:如何在一个线程仍在运行时阻止另一个线程执行 (Win32)
- 将 Win32/WinAPI 应用程序移植到 wxWidgets
- Win32 API 控制台光标在 WriteConsole 后不移动
- C++ Win32 Threads
- C++ win32 如何使密码字段可选并启用复制和粘贴?
- C++ 基于 WIN64 构建的 ADO 在 win32 操作系统上不起作用