我正在尝试在 Visual Studio 2005 中启动并运行一个开发环境,以便使用 Oracle C++ 调用接口 (OCCI) 开发应用程序。
我的系统规格是: 操作系统:Windows 7,64 位 Oracle:11g 版本 11.2.0.2,32 位 Instant Client:BasicLite 和 SDK 版本 11.2.0.4 32 位 Visual Studio 2005 专业版 8.0 版启用了 32 位工具
我遵循了 Mark Williams 的这个指南,并且我运行了这个示例,但只在发布模式下运行。当我切换到调试模式时,应用程序将构建,但是当我运行它时,我收到以下错误:
Problem signature:
Problem Event Name: APPCRASH
Application Name: OCCITest.exe
Application Version: 0.0.0.0
Application Timestamp: 53f5dfdd
Fault Module Name: KERNELBASE.dll
Fault Module Version: 6.1.7601.18229
触发此错误的小示例程序是:
#include "employees.h"
using namespace std;
using namespace oracle::occi;
int main (void)
{
Employees *pEmployees = new Employees();
delete pEmployees;
return 0;
}
Employees::Employees()
{
user = "hr";
passwd = "hr";
db = "localhost:1521/service_name";
env = Environment::createEnvironment(Environment::DEFAULT);
try
{
con = env->createConnection(user, passwd, db);
}
catch (SQLException& ex)
{
cout << ex.getMessage();
exit(EXIT_FAILURE);
}
}
Employees::~Employees()
{
env->terminateConnection (con);
Environment::terminateEnvironment (env);
}
如果我删除对 OCCI 功能的所有调用,则应用程序不会崩溃。也就是说,这个程序运行时没有错误:
#include "employees.h"
using namespace std;
using namespace oracle::occi;
int main (void)
{
Employees *pEmployees = new Employees();
delete pEmployees;
return 0;
}
Employees::Employees()
{
user = "hr";
passwd = "hr";
db = "localhost:1521/service_name";
cout<<"Look at me, I'm running"<<endl;
}
Employees::~Employees()
{}
在指南中,Mark 提到在调试模式下运行时,链接器应该使用库文件 oraocci11d.lib。但是,该文件不包含在 Instant Client SDK 版本 11.2.0.4 中,因此我将输入文件 oraocci11.lib 用于发布和调试版本。
我已经没有关于如何继续解决这个问题的想法了,我将非常感谢任何和所有的帮助。