Visual Studio 2019中使用ACEDAO调用OpenDatabase时出现ESP保存错误的问题咨询
Visual Studio 2019中使用ACEDAO调用OpenDatabase时出现ESP保存错误的问题咨询
我想做一个用C++结合DAO的简单性能实验,找到了一段示例代码,看起来可以实现需求:
#import <C:\Program Files\Common Files\microsoft shared\OFFICE14\ACEDAO.DLL> rename( "EOF", "AdoNSEOF" ) _bstr_t bstrConnect = "C:\\temp\\test.accdb"; DAO::_DBEngine* pEngine = NULL; CoInitialize(NULL); HRESULT hr = CoCreateInstance( __uuidof(DAO::DBEngine), NULL, CLSCTX_INPROC_SERVER, IID_IDispatch, (LPVOID*)&pEngine); if (SUCCEEDED(hr) && pEngine) { // COM errors are handled by the C++ try/catch block. try { DAO::DatabasePtr pDbPtr = NULL; pDbPtr = pEngine->OpenDatabase(bstrConnect); ...
但是在调用OpenDatabase的时候失败了,弹出了这个错误:
Run-Time Check Failure #0 - The value of ESP was not properly saved across a function call. This is usually a result of calling a function declared with one calling convention with a function pointer declared with a different calling convention.
说实话我现在有点懵——几十年前只学过一学期C++。查了资料说这通常是头文件的问题,但我没自己写过头文件啊,只是在代码里加了#import语句,Visual Studio编译的时候自动生成的头文件。这种情况还能解决吗?
备注:内容来源于stack exchange,提问作者mellamokb
相关产品推荐
相关产品推荐

