Программа на C / C ++, подключающаяся к 32-битной DB2 и 64-битной DB2 - PullRequest
2 голосов
/ 12 февраля 2009

Можно ли успешно написать программу на C / C ++ в операционных системах * IX, которая одновременно работает как с 32-битной, так и с 64-битной реализацией DB2?

Точное требование заключается в чтении из 32-битной базы данных DB2 и записи в 64-битную базу данных DB2.

Ответы [ 2 ]

3 голосов
/ 13 февраля 2009

Поскольку C Common Client использует сетевое соединение, нет очевидной причины, по которой 32-разрядный клиент не должен подключаться ни к 32-разрядному, ни к 64-разрядному серверу (или к обоим по отдельным подключениям). Тот же комментарий относится к 64-битным клиентам. Протокол DRDA, используемый для связи между клиентом и сервером, должен быть в порядке.

Я могу однозначно ответить за Informix (о котором вы не спрашивали) - я использую 32-битную или 64-битную ESQL / C для подключения к 32-битным или 64-битным серверам IDS без проблем Единственное ограничение на соединение с общей памятью; тогда клиент и сервер должны иметь одинаковую «битность». Но сетевые и локальные (потоковые, сокетные) соединения нейтральны.

0 голосов
/ 12 февраля 2009

Полагаю, ваша проблема в том, что вы должны загрузить обе библиотеки одновременно. Вы не можете просто связать оба в исполняемом файле, используя две опции -l, потому что имена символов конфликтуют. Если это проблема, длопен, если твой друг.

#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 {
    ....
}

Поскольку я не знаю DB2, я больше не могу вам помочь, но если это была проблема, у вас теперь должно быть все, чтобы решить эту проблему.

...