32 ビットと 64 ビットの両方の DB2 実装で同時に動作する *IX オペレーティング システムで C / C++ プログラムを正常に作成できますか?
正確な要件は、32 ビット DB2 データベースから読み取り、64 ビット DB2 データベースに書き込むことです。
C Common Clientはネットワーク接続を使用するため、32ビットクライアントが32ビットサーバーまたは64ビットサーバーのいずれか(または両方を別々の接続で)に接続しない理由は明らかではありません。同じコメントが64ビットクライアントにも当てはまります。クライアントとサーバー間の通信に使用されるDRDAプロトコルは問題ないはずです。
私はInformix(あなたが尋ねなかった)について明確に答えることができます-私は32ビットまたは64ビットのESQL / Cを使用して、32ビットまたは64ビットのIDSサーバーに問題なく接続します。唯一の制限は、共有メモリ接続にあります。その場合、クライアントとサーバーは同じ「苦味」である必要があります。ただし、ネットワーク接続とローカル(ストリーム、ソケット)接続は中立です。
あなたの問題は、両方のライブラリを同時にロードする必要があることだと思います。シンボル名が衝突するため、2 つの -l オプションを使用して実行可能ファイルで両方をリンクすることはできません。これが問題である場合は、友達なら dlopen してください。
#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 について詳しくないので、これ以上お手伝いすることはできませんが、これが問題である場合は、問題を解決するためのすべてが揃っているはずです。