我想为 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.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
为什么要在扩展后设置版本号?- 为什么编译器无法识别文件类型?
- 怎么做才能让编译器识别文件类型?