OpenSuse 11.2 で、unixODBC を使用して MySQL データベースのデータ ソースをインストールする次のコードを正常にコンパイル、リンク、および実行しました。
#include <iostream>
#include <sql.h>
#include <sqlext.h>
#include <odbcinst.h>
/* Add a data source for the following MySQL db: db=testdb, username=test, password = test. */
void inst()
{
BOOL ret = SQLConfigDataSource(NULL, ODBC_ADD_DSN, "MySQL driver",
"DSN=mysource\0UID=test\0PWD=test\0DATABASE=testdb\0\0");
if (!ret) {
DWORD errCode;
char errBuf[SQL_MAX_MESSAGE_LENGTH];
WORD msgLen;
SQLInstallerError(1, &errCode, errBuf, SQL_MAX_MESSAGE_LENGTH, &msgLen);
std::cerr << errBuf << std::endl;
}
}
int main()
{
inst();
return 0;
}
Debian Lenny で同じコードを使用すると、問題が発生しました。まず、このコードを次のようにコンパイルしました。
c++ -o main main.cc -lodbc -lodbcinst -L/usr/lib/odbc -lmyodbc
うまくいきました。しかし、結果のバイナリを実行しようとすると、リンカ エラーが発生しました。これは、ldd main と入力することで実際に確認されました。
libmyodbc3_r-3.51.15.so => not found
ホスト (Debian Lenny) に unixODBC と関連する MySQL ドライバー (myodbc) を最も簡単な方法 (aptitude 経由) で正しくインストールしましたが、この共有ライブラリが見つかりませんでした。
/usr/lib/odbc/libmyodbc.so にシンボリック リンクを作成するつもりでした。とにかく今、私のプログラムは次のメッセージを返します:
General installer error
したがって、ファイル libmyodbc3_r-3.51.15.so が本当に欠落しているように感じます。
注: Debian Lenny では、unixODBC のバージョンは 2.2.11、MySQL のバージョンは 5.0.51a です。
誰もそのような状況に遭遇したことがありますか? どんな助けでも大歓迎です。