C ++ dylib no projeto Swift - símbolos indefinidos para a função exposta no dylib
C ++ dylib expõe da seguinte maneira
__attribute__((visibility("default"))) int addNumber(int number) {
return 0;
}
no meu projeto Swift, defino o diretório Import Paths como o diretório que contém meu arquivo module.map:
module MyLib {
header "myLib.h"
export *
}
Eu adiciono manualmentemyLib.h
ao meu projeto:
#ifndef mylib_h
#define mylib_h
int addNumber(int number);
#endif
Minhasmain.swift
faz o seguinte:
import Foundation
import MyLib
print("Hello, World!")
var result = addNumber(3)
Ao compilar o projeto swift, vejo que ele está vinculado ao meu dylib (-lMyLib), mas recebo o seguinte erro:
Símbolos indefinidos para a arquitetura x86_64: "_addNumber", referenciados em: _main in main.o ld: símbolo (s) não encontrado (s) para a arquitetura x86_64 clang: error: comando do linker falhou com o código de saída 1 (use -v para ver a chamada)
Portanto, embora esteja vinculado corretamente, ele não consegue encontrar os símbolos. Eu verifiquei ambos comnm
(0000000000000d00 (__TEXT, __ texto) addNumber externo) e Hopper de que essa função existe no dylib.