В OpenSuse 11.2 я успешно скомпилировал, связал и запустил следующий код, который устанавливает источник данных для базы данных MySQL с unixODBC:
#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
Хотя я правильно установил unixODBC и связанный драйвер MySQL (myodbc) на моем хосте(Debian Lenny) самым простым способом (т.е. через 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
Кто-нибудь сталкивался с такой ситуацией?Любая помощь будет оценена.