Я хочу использовать библиотеки Oracle instantclient для C ++. Я использую Xcode в качестве IDE. Я добавил библиотеку occi , выбрав «Проект»> «Фаза сборки»> «Связать бинарный файл с библиотеками». При компиляции появляется следующее предупреждение и ошибка.
предупреждение: пропустить файл '/Users/user/Library/Oracle/instantclient_12_2/libocci.dylib.12.1' (неожиданный тип файла 'text.man' на этапе сборки Frameworks & Libraries)
ошибка: неопределенные символы для архитектуры x86_64: "oracle :: occi :: Environment :: createEnvironment (oracle :: occi :: Environment :: Mode, void *, void * () (void , без знака long), void * () (void , void *, unsigned long), void () (void , void *)) ", на который ссылаются:
_main in main.o
Конечно, ошибка связана с предупреждением. Похоже, что проблема исходит из номера версии (.12.1) в конце файла после «.dylib» (у меня нет проблемы для других библиотек в той же папке, для которых имя не имеет номер версии после расширения файла).
Библиотека 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
?
- Почему компилятор не распознает тип файла?
- Что нужно сделать, чтобы компилятор распознал тип файла?