2

是否有可能在 *IX 操作系统中成功编写一个同时在 32 位和 64 位 DB2 实现上运行的 C/C++ 程序?

确切的要求是从 32 位 DB2 数据库读取并写入 64 位 DB2 数据库。

4

2 回答 2

3

由于 C 通用客户端使用网络连接,因此 32 位客户端不应该连接到 32 位或 64 位服务器(或两者都在单独的连接上)没有明显的理由。相同的注释适用于 64 位客户端。用于客户端和服务器之间通信的 DRDA 协议应该没问题。

我可以明确回答 Informix(您没有问过)——我使用 32 位或 64 位 ESQL/C 连接到 32 位或 64 位 IDS 服务器没有问题。唯一的限制是共享内存连接;那么客户端和服务器必须具有相同的“bittiness”。但是网络连接和本地(流、套接字)连接是中性的。

于 2009-02-13T05:37:36.757 回答
0

我猜你的问题是,你必须同时加载两个库。您不能只使用两个 -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,所以我无法进一步帮助您,但如果这是问题所在,那么您现在应该拥有解决问题的一切。

于 2009-02-12T15:13:32.043 回答