В Интернете много вопросов по этому поводу, но я не смог решить свою проблему. Я изучал это в течение нескольких дней.
Я хочу запустить простой класс C ++ в проекте Swift, к этому я следовал этому уроку: http://www.swiftprogrammer.info/swift_call_cpp.html.
В основном я следовал за шагами:
junk.cpp
а также junk.h
файлыg++ or/and clang++
$ ar r libjunkcpp.a junk.o
ranlib libjunkcpp.a
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();
}
bridge.h
int getIntFromCPP();
Задача ещё не решена.
Других решений пока нет …