sur openSUSE 11.2, je compilé avec succès, lié, et a couru le code suivant qui installe une source de données pour une base de données MySQL avec unixODBC:problème avec le pilote MySQL pour unixODBC sur Debian Lenny
#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;
}
Avec le même code sur Debian Lenny, j'ai eu des problèmes. D'abord, j'ai compilé ce code de la façon suivante:
c++ -o main main.cc -lodbc -lodbcinst -L/usr/lib/odbc -lmyodbc
Ça s'est bien passé. Mais quand je tentais d'exécuter un binaire, je suis une erreur de liaison qui en fait a été confirmé en tapant ldd principale:
libmyodbc3_r-3.51.15.so => not found
Bien que unixODBC et le pilote de MySQL associé (myodbc) sur mon hôte (Debian j'ai installé correctement Lenny) la manière la plus simple (ie via aptitude), je n'ai pas pu trouver cette bibliothèque partagée.
J'ai pensé à tort, eh bien, je vais créer un lien symbolique sur /usr/lib/odbc/libmyodbc.so. Quoi qu'il en soit maintenant mon programme renvoie le message suivant:
General installer error
donc je me sens le fichier libmyodbc3_r-3.51.15.so est vraiment manquant.
Note: sur Debian Lenny, la version de unixODBC est 2.2.11 et la version de MySQL est 5.0.51a
Quiconque a déjà couru dans une telle situation? Toute aide serait appréciée.
Une troisième option consiste à coder en dur le chemin/usr/lib/odbc dans le binaire, faites-le par ajouter le drapeau '-Wl, -rpath,/usr/lib/odbc' – nos