Ошибка использования C ++ в проекте Swift для Xcode: неопределенные символы для архитектуры x86_64 - PullRequest
0 голосов
/ 06 декабря 2018

В Интернете много вопросов по этому поводу, но я не смог решить свою проблему.Я изучал это в течение нескольких дней.

Я хочу запустить простой класс C ++ в проекте Swift, чтобы следовать этому уроку: http://www.swiftprogrammer.info/swift_call_cpp.html. По сути, я выполнил следующие шаги:

  1. Создание junk.cpp и junk.h файлов
  2. Компиляция с использованием g++ or/and clang++
  3. Создание файла .a с: $ ar r libjunkcpp.a junk.o
  4. ranlib libjunkcpp.a
  5. Связано с Xcode в Build Phases -> Link Binary With Libraries -> Add

При компиляции возникают следующие ошибки:

Undefined symbols for architecture x86_64:
  "A::getInt()", referenced from:
      _getIntFromCPP in wrapper.o
  "A::A(int)", referenced from:
      _getIntFromCPP in wrapper.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

junk.h

class A {
    public:
    A(int);
    int getInt();

    private:
    int m_Int;
};

junk.cpp

#include "junk.h"

A::A(int _i) : m_Int(_i) {}

int A::getInt() {
    return m_Int
}

wrapper.cpp

#include "junk.h"

extern "C" int getIntFromCPP() {
    // Create an instance of A, defined in
    // the library, and call getInt() on it:
    return A(1234).getInt();
}

мост.ч

int getIntFromCPP();

...