Я много искал в Интернете, но не нашел решения для моей проблемы.
Моя цель — создать простой класс в C ++ и использовать его в Swift. Для этого я следовал этому уроку -> http://www.swiftprogrammer.info/swift_call_cpp.html (Это очень приятно).
В основном я следовал за шагами:
junk.cpp
а также junk.h
файлыg++ or/and clang++
$ ar r libjunkcpp.a junk.o
Build Phases -> Link Binary With Libraries -> Add
Поэтому, когда я сделал это, Xcode больше не компилирует мой проект, на левой стороне Xcode появляется сообщение об ошибке:
Сбой команды компоновщика с кодом выхода 1 (используйте -v для просмотра вызова)
И в журнале сообщение об ошибке:
ld: в архиве нет файла оглавления
‘/Users/augustosansoncadini/Documents/XcodeProjects/Ex_cpp_Swift_CmdLineTool/junk/libjunkcpp.a’
для архитектуры x86_64
Я думаю, что нужно скомпилировать архитектуру, но когда я набираю g++ -v
результат:
Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/usr/include/c++/4.2.1
Apple LLVM version 10.0.0 (clang-1000.11.45.5)
Target: x86_64-apple-darwin18.2.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
Итак, я делаю вывод, что цель архитектуры верна.
Я думаю, что это изображение может помочь:
Замечания:
Когда я удаляю .a
файл из Link Binary With Libraries код компилируется нормально.
То, что вы пропустите, это вызов ranlib
Команда для создания оглавления:
$ ranlib libjunkcpp.a
ar
а также ranlib
Команды всегда должны быть парными.
Других решений пока нет …