Visual Studio 2005 で Oracle C++ Call Interface (OCCI) を使用してアプリケーションを開発するための開発環境を立ち上げて実行しようとしています。
私のシステム仕様は次のとおりです。 OS: Windows 7、64 ビット Oracle: 11g リリース 11.2.0.2、32 ビット Instant Client: BasicLite および SDK バージョン 11.2.0.4 32 ビット Visual Studio 2005 Professional Edition バージョン 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 を使用しています。
この問題を解決する方法についてのアイデアが不足しています。すべての助けをいただければ幸いです。