C++ 使用msado21.tlh的Append函数时运行时检查失败#0

C++ 使用msado21.tlh的Append函数时运行时检查失败#0,c++,com,ado,C++,Com,Ado,我正在使用msado21.tlh在记录集中追加记录。但是Append函数会导致运行时检查失败#0错误。我搜索了一下这个错误,了解到它与呼叫约定有关。我无法解决这个错误。请帮忙 我使用的是Visual studio 2012,操作系统是windows server 2008 R2 SP1,64位机器。 我有一个网站应用程序,它使用的是一个C++应用程序,它是一个窗口服务(32位)。这个C++应用程序使用MSADO21.TLB。项目属性中设置的调用约定为u cdecl(/Gd),msado21的路径

我正在使用msado21.tlh在记录集中追加记录。但是Append函数会导致运行时检查失败#0错误。我搜索了一下这个错误,了解到它与呼叫约定有关。我无法解决这个错误。请帮忙

我使用的是Visual studio 2012,操作系统是windows server 2008 R2 SP1,64位机器。 我有一个网站应用程序,它使用的是一个C++应用程序,它是一个窗口服务(32位)。这个C++应用程序使用MSADO21.TLB。项目属性中设置的调用约定为u cdecl(/Gd),msado21的路径设置为C:\program files\common files\system\ado。此外,在IIS管理器中,用于在AppPool中启用32位进程的标志设置为true。 但是如果我使用C:\ProgramFiles(x86)\common files\system\ado中的msado21.tlb,那么一切都可以正常工作。我无法理解这个问题的根本原因是什么以及如何解决它? 请提供一些指导。
谢谢

您有未初始化的变量。ADO 2.1非常非常古老。Fields接口有一个Append()方法,它是在Windows7SP1上更新的,以修复一个类型库错误,该错误使它难以在64位代码中使用。您需要使用#import指令来生成.tlh文件,请确保您没有使用上个世纪生成的.tlh文件。很难说这些是否适用,我们在这里瞎飞,没有任何东西可看。嗨,汉斯,谢谢你的回复。正如您所建议的,我需要生成.tlh文件,请您更清楚一点。我使用的是#import“masdo21.tlb”无名称空间重命名(“EOF”、“gtEOF”),项目属性中的tlb路径设置为C:\program files\common files\system\ado。但我仍然面临这个问题