programa de C / C ++ ligar a DB2 de 32 bits e de 64 bits simultaneamente DB2
Pergunta
É possível ao autor com sucesso um programa C / C ++ em sistemas operacionais * IX que opera em ambas as implementações do DB2 de 32 bits e 64 bits simultaneamente?
A exigência exata é ler a partir de um banco de dados DB2 de 32 bits e escrever em um banco de dados DB2 de 64 bits.
Solução
Uma vez que o cliente comum C usa uma conexão de rede, não há nenhuma razão óbvia por que o cliente de 32 bits não deve conectar a qualquer uma de 32 bits ou um servidor de 64 bits (ou ambos em conexões separadas). A mesma observação se aplica a clientes de 64 bits. O protocolo DRDA usado para comunicação entre cliente e servidor deve estar OK.
Eu posso responder definitivamente para Informix (que você não perguntar sobre) - eu uso 32-bit ou 64-bit ESQL / C se conectar a qualquer de 32 bits ou de 64 bits servidores IDS sem problema. A única limitação é em uma conexão de memória compartilhada; em seguida, o cliente eo servidor deve ser da mesma 'bittiness'. Mas as conexões de rede e os (Stream, soquete) conexões locais são neutros.
Outras dicas
Eu acho que o problema é que você tem que carregar as duas bibliotecas simultaneamente. Você não pode simplesmente ligar tanto no executável usando duas opções -l, porque os nomes de símbolo colidem. Se este for o problema, dlopen se seu amigo.
#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 {
....
}
Porque eu não sei DB2 eu não posso ajudá-lo mais, mas se este era o problema, agora você deve ter tudo para resolver o problema.