Pregunta

¿Es posible autor con éxito un programa en C / C ++ en sistemas operativos * IX que opera en ambas implementaciones de DB2 de 32 bits y 64 bits de forma simultánea?

El requisito exacto es leer desde una base de datos DB2 de 32 bits y escribir en una base de datos DB2 de 64 bits.

¿Fue útil?

Solución

Desde el cliente Común C utiliza una conexión de red, no hay ninguna razón obvia por el cliente de 32 bits no debe conectarse a cualquiera de 32 bits o un servidor de 64 bits (o ambos en conexiones separadas). La misma observación se aplica a los clientes de 64 bits. El protocolo DRDA utilizado para la comunicación entre cliente y servidor debería estar bien.

Puedo responder definitivamente para Informix (que no preguntó) - uso de 32 bits o 64 bits ESQL / C para conectarse a los servidores IDS ya sea de 32 bits o de 64 bits sin problema. La única limitación es sobre una conexión de memoria compartida; a continuación, el cliente y el servidor deben ser de la misma 'bittiness'. Sin embargo, las conexiones de red y los arroyos, (socket) conexiones locales son neutrales.

Otros consejos

Creo que su problema es que tiene que cargar ambas bibliotecas simultáneamente. No se puede simplemente enlazar tanto en el ejecutable utilizando dos opciones -l, debido a que los nombres de los símbolos chocan. Si este es el problema, dlopen si su 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 {
    ....
}

Debido a que no sé DB2 no puedo ayudar más lejos, pero si esto era el problema, ahora debería tener todo para resolver el problema.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top