Question

Est-il possible à l'auteur avec succès un programme C / C ++ dans les systèmes d'exploitation * IX qui fonctionne sur les deux implémentations 32 bits et 64 bits DB2 simultanément?

L'exigence exacte est de lire à partir d'une base de données DB2 32 bits et écrire dans une base de données DB2 64 bits.

Était-ce utile?

La solution

Depuis le C Common Client utilise une connexion réseau, il n'y a aucune raison évidente pour laquelle le client 32 bits ne doit pas connecter à un 32 bits ou un serveur 64 bits (ou les deux sur des connexions séparées). La même remarque vaut pour les clients 64 bits. Le protocole DRDA utilisé pour communiquer entre le client et le serveur doit être OK.

Je peux répondre définitivement pour Informix (que vous avez pas demandé) - J'utilise 32 bits ou 64 bits ESQL / C pour se connecter à 32 bits ou serveurs IDS 64 bits sans problème. La seule limitation est une connexion de mémoire partagée; alors le client et le serveur doivent être de la même « bittiness ». Mais les connexions réseau et les connexions locales (flux, prise) sont neutres.

Autres conseils

Je suppose que votre problème est que vous devez charger les deux bibliothèques simultanément. Vous ne pouvez pas juste un lien à la fois dans l'exécutable en utilisant deux options -l, parce que les noms de symboles entrent en collision. Si tel est le problème, dlopen si votre ami.

#include <dlfcn.h>

void * handle=dlopen(filename,RTLD_NOW|RTLD_GLOBAL);

bool (*some_function)(char * name);
some_function=(bool (*)(char *))dlsym(handle,"name_of_some_function");
if (some_function("test")) {
    ....
} else {
    ....
}

Parce que je ne sais pas DB2, je ne peux pas vous aider davantage, mais si tel était le problème, vous devriez maintenant avoir tout pour résoudre le problème.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top