C / C ++ programma collegamento a 32 bit DB2 e 64 bit DB2 simultaneamente
Domanda
E 'possibile all'autore con successo un programma C / C ++ nei sistemi operativi * IX che opera su entrambe le implementazioni DB2 a 32-bit e 64-bit contemporaneamente?
Il requisito esatto è quello di leggere da un database DB2 a 32-bit e scrivere in un database DB2 a 64 bit.
Soluzione
Dato che il Common Client C utilizza una connessione di rete, non c'è alcuna ragione evidente per cui il client a 32 bit non dovrebbe collegarsi a uno a 32 bit o un server a 64 bit (o entrambi su connessioni separate). La stessa osservazione vale per client a 64 bit. Il protocollo DRDA utilizzato per la comunicazione tra client e server dovrebbe essere OK.
posso rispondere definitivamente per Informix (che non hai chiesto circa) - io uso a 32-bit o 64-bit ESQL / C per connettersi ai server IDS sia a 32-bit o 64-bit senza problemi. L'unica limitazione è su una connessione di memoria condivisa; quindi il client e il server devono essere dello stesso 'bittiness'. Ma le connessioni di rete e le (flusso, presa) connessioni locali sono neutre.
Altri suggerimenti
Credo che il problema è che si deve caricare entrambe le librerie contemporaneamente. Non si può semplicemente collegare sia nel eseguibile utilizzando due opzioni -l, perché i nomi dei simboli si scontrano. Se questo è il problema, dlopen se il tuo amico.
#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 {
....
}
Perché io non so DB2 non posso aiutarti ulteriormente, ma se questo era il problema, si dovrebbe ora avere tutto per risolvere il problema.