一、代码修改说明
sqlapi\SQLAPI_LINUX\src\ora8API_linux.cpp文件中:
1、static const char *g_sORA8DLLNames = “libclntsh” SHARED_OBJ_EXT;
修改为:static const char g_sORA8DLLNames = “libdci” SHARED_OBJ_EXT;–-加载达梦的dci库
2、SALibraryFuncionAssert(this->OCIResultSetToStmt != NULL, _TSA(“OCIResultSetToStmt”));达梦不支持的dci方法需要注释掉,暂时先绕过。同理的OCILobGetLength、OCILobRead2、OCIReset等方法达梦也不支持。
二、Linux上编译
1、进入到/ssd1/snn/SQLAPI_LINUX/src目录,执行./sqlapi_gcc
2、生成物在/ssd1/snn/SQLAPI_LINUX/lib:
libsqlapi.a libsqlapid.a libsqlapid.so libsqlapi.so
这样sqlapi的动态库就生成好了。
三、Linux上创建demo工程,连接DM
1、程序源码,参考前一篇文章window上的代码(https://eco.dameng.com/community/article/95261b5cc0f3df2ce845ce1a58c5beef)。
2、编译
g++ -o sqlapitest testapi_demo.cpp -L/ssd1/snn/SQLAPI_LINUX/lib -lsqlapi -ldl
这样就会在当前目录下生成sqlapitest二进制的可执行程序文件;
3、执行可执行文件sqlapitest
[dmdba@ testsqlapi]$ ./sqlapitest
./sqlapitest: error while loading shared libraries: libsqlapi.so: cannot open shared object file: No such file or director
解决方法:export LD_LIBRARY_PATH=/ssd1/snn/sqlapi-4.2.5-3/SQLAPI/lib
4、再次执行可执行文件sqlapitest
[dmdba@x86_104_19 testsqlapi]$ ./sqlapitest
libdoci.so: cannot open shared object file: No such file or directory
解决方法: cp -r /ssd1/snn/dm8_20220304_x86_rh6_64_dmdci/dci/ ./
将dci 的动态库和sqlapi库放在一起,至于/ssd1/snn/SQLAPI_LINUX/lib目录下
5、运行成功
文章
阅读量
获赞