在 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
尽管我以最简单的方式(即通过 aptitude)在我的主机 (Debian Lenny) 上正确安装了 unixODBC 和相关的 MySQL 驱动程序 (myodbc),但我找不到这个共享库。
我错误地认为,好吧,我将在 /usr/lib/odbc/libmyodbc.so 上创建一个符号链接。无论如何,现在我的程序返回以下消息:
General installer error
所以我觉得文件 libmyodbc3_r-3.51.15.so 真的不见了。
注意:在 Debian Lenny 上,unixODBC 的版本是 2.2.11,MySQL 的版本是 5.0.51a
有人遇到过这种情况吗?任何帮助,将不胜感激。