Каково влияние extern "C" в C ++?

dylib предоставляет следующее

__attribute__((visibility("default"))) int addNumber(int number) {
    return 0;
}

в моем проекте Swift я установил каталог Import Paths в каталог, содержащий мой файл module.map:

module MyLib {
    header "myLib.h"
    export *
}

Я вручную добавляюmyLib.h к моему проекту:

#ifndef mylib_h
#define mylib_h

int addNumber(int number);

#endif 

мойmain.swift делает следующее:

import Foundation
import MyLib

print("Hello, World!")
var result = addNumber(3)

Когда я компилирую проект swift, я вижу, что он ссылается на мой dylib (-lMyLib), но я получаю следующую ошибку:

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

Поэтому, хотя он правильно связывается, он не может найти символы. Я проверил оба сnm (0000000000000d00 (__TEXT, __ text) external addNumber) и Hopper, что эта функция существует в dylib.

Ответы на вопрос(1)

Ваш ответ на вопрос