我想将Oracle instantclient 库用于C ++。我使用Xcode作为IDE。我通过项目>构建阶段>库的链接二进制文件添加了 occi 库。编译时出现以下警告和错误。
警告:跳过文件'/Users/user/Library/Oracle/instantclient_12_2/libocci.dylib.12.1'(在Frameworks&Libraries构建阶段,意外的文件类型为'text.man')
错误:体系结构x86_64的未定义符号:“ oracle :: occi :: Environment :: createEnvironment(oracle :: occi :: Environment :: Mode,void *,void *()(void ,unsigned long),void *()(void ,void *,unsigned long),void()(void ,void *))“,引用自: _main in main.o
当然,该错误是由警告引起的。看来问题出在“ .dylib”之后文件末尾的版本号(.12.1)(对于同一个文件夹中名称没有该名称的其他库,我没有问题文件扩展名后的版本号)。
即时客户端库可以下载here。您会看到下载的文件夹将包含文件 libocci.dylib 和 libocci.dylib.12.1 。第一个是第二个的链接:
ls -l *occi*
lrwxr-xr-x@ 1 user wheel 18 Mar 23 14:01 libocci.dylib -> libocci.dylib.12.1
-rwxr-xr-x@ 1 user wheel 1465312 Jan 9 2018 libocci.dylib.12.1
我尝试了两个文件,Xcode会自动使用 libocci.dylib.12.1 。
.dylib
扩展名之后设置版本号?答案 0 :(得分:0)
我必须在product> scheme> edit方案中将DYLD_LIBRARY_PATH添加到env vars。
还要在构建设置中将-locci和-lclntsh添加到“其他链接器标志”。