xcode — выполнение функции C ++ в Swift4

У меня есть два файла cpp

  • source.hpp
  • source.cpp

Когда я включил их, xcode создал заголовок моста, в котором я написал

#import "source.hpp"

В source.hpp у меня есть

#ifndef source_hpp
#define source_hpp
#include <stdio.h>

int othermain( int argc, char** argv );
#endif /* source_hpp */

тогда в Swift4 у меня есть main.swift с

func callBusy(args : [String]) -> Int32 {
// Create [UnsafeMutablePointer<Int8>]:
var cargs = args.map { strdup($0) }
// Call C function:
let result = othermain(Int32(args.count), &cargs)
// Free the duplicated strings:
for ptr in cargs { free(ptr) }
return result
}

Все компилируется. Тем не менее, я столкнулся с какой-то странной ошибкой ссылки

Неопределенные символы для архитектуры x86_64: «_othermain», ссылка
от:
__T013MyProjectPortSwift04callA0s5Int32VSaySSG4args_tF в main.o ld: символы не найдены для архитектуры x86_64 clang: error: linker
Сбой команды с кодом выхода 1 (используйте -v, чтобы увидеть вызов)

Этот процесс использовался для работы с каждым C-файлом, который мне пришлось импортировать, но, похоже, не для C ++.
Я попробовал ответы на другие вопросы, но здесь ничего не получается.

я использую Версия Xcode 9.2 (9C40b)
(Swift4.0)

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]