Qt如何在不安装Oracle客户端的情况下使用OCI驱动程序

Qt如何在不安装Oracle客户端的情况下使用OCI驱动程序,qt,oracle11g,qt4,oracle-call-interface,Qt,Oracle11g,Qt4,Oracle Call Interface,有没有一种方法可以在不安装Oracle客户端的情况下使用Qt OCI驱动程序?也许在我们构建驱动程序时使用Oracle的静态库?或者使用一些Oracle客户端DLL和一些环境变量设置 问题是,在使用我的应用程序之前,我不能要求我的客户端安装oracle客户端。他们希望我的应用程序能够顺利启动并运行 如果这无法实现,那么我们有什么替代方案 OS=Windows7 Qt=4.8.6 你想要实现什么?您的意图纯粹是技术性的还是在许可方面存在问题?Oracle不允许重新分发OCI LIB。你在用什么操作

有没有一种方法可以在不安装Oracle客户端的情况下使用Qt OCI驱动程序?也许在我们构建驱动程序时使用Oracle的静态库?或者使用一些Oracle客户端DLL和一些环境变量设置

问题是,在使用我的应用程序之前,我不能要求我的客户端安装oracle客户端。他们希望我的应用程序能够顺利启动并运行

如果这无法实现,那么我们有什么替代方案

OS=Windows7 Qt=4.8.6
你想要实现什么?您的意图纯粹是技术性的还是在许可方面存在问题?Oracle不允许重新分发OCI LIB。你在用什么操作系统

在Linux/AIX上,理论上您可以创建自己的静态版本的OCI库。动态的称为libclntsh sh-表示共享。静态的libclntst至少可以使用Oracle的makefiles手动构建。 然后您可以在技术上将这个静态库嵌入到您的应用程序中。您可能缺少一些符号,例如u_fast_memcpy_A。这是因为Oracle是使用Intel的ICC编译器编译的,并且您还添加了一些ICC运行库的静态版本

你们也可以看看这个项目。用户必须手动下载OCI库,并将所有特定于Oracle的ale代码放入单独的插件中

更新:AFAIK Oracle不允许重新分发OCI.DLL,除非您是Oracle的业务合作伙伴,或者无论现在如何称呼它

对于Windows平台,您可以使用:

Microsoft针对Oracle的ODBC驱动程序。它应该出现在每个Windows安装中。但是这一个非常旧,不支持像LOB这样的较新数据类型,可能它也不支持一些字符集

一些第三方oci类驱动程序。但是AFAIK仅适用于C

使用某些应用程序服务器,而不使用来自客户端应用程序的直接数据库连接

编写自己的驱动程序。看


如果有人感兴趣,我就是这样做的

请阅读“忘记修补零件”。 下载oracle即时客户端。这是一个zip文件,无需安装,只需解压缩应用程序包含的文件即可。或者,我们可以从其他地方提取位置并将其包含到Path env变量中 因为现在我们没有安装客户端,所以我们也没有tnsnames.ora文件。因此,直接设置ip、端口和服务名称。或者,如果需要tnsnames.ora文件,我们可以使用TNS_ADMIN env变量: 就是这样。它应该工作得很好。
同时,分发Oracle即时客户端DLL是合法的。

我的意图是静态链接Oracle或分发DLL。但是我不确定许可证的问题,因为我还没有看过。谢谢。。我去查一下。
   o_Database.setHostName("10.10.10.225");
   o_Database.setPort(1521);
   o_Database.setDatabaseName("ora11g");