-1

我想为 C++ 使用 Oracle即时客户端库。我使用 Xcode 作为 IDE。我通过 Project > Build Phase > Link binary with libraries 添加了occi库。我在编译时遇到以下警告和错误。

警告:跳过文件'/Users/user/Library/Oracle/instantclient_12_2/libocci.dylib.12.1'(在框架和库构建阶段出现意外的文件类型'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.o 中的 _main

当然,错误是由于警告引起的。看起来问题来自“.dylib”之后文件末尾的版本号(.12.1)(对于同一文件夹中没有名称的其他库,我没有问题文件扩展名后的版本号)。

可以在此处下载Instantclient库。您将看到下载的文件夹将包含文件libocci.dyliblibocci.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为什么要在扩展后设置版本号?
  • 为什么编译器无法识别文件类型?
  • 怎么做才能让编译器识别文件类型?
4

1 回答 1

0

我必须在产品>方案>编辑方案中将 DYLD_LIBRARY_PATH 添加到环境变量。

还将 -locci 和 -lclntsh 添加到构建设置中的“其他链接器标志”。

于 2019-04-01T07:20:39.270 回答