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.

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top