C ++ dylib en el proyecto Swift: símbolos indefinidos para la función expuesta en dylib
C ++ dylib se expone de la siguiente manera
__attribute__((visibility("default"))) int addNumber(int number) {
return 0;
}
en mi proyecto Swift, configuré el directorio Importar rutas al directorio que contiene mi archivo module.map:
module MyLib {
header "myLib.h"
export *
}
Agrego manualmentemyLib.h
a mi proyecto:
#ifndef mylib_h
#define mylib_h
int addNumber(int number);
#endif
Mimain.swift
hace lo siguiente:
import Foundation
import MyLib
print("Hello, World!")
var result = addNumber(3)
Cuando compilo el proyecto rápido, puedo ver que se vincula con mi dylib (-lMyLib), pero aparece el siguiente error:
Símbolos indefinidos para arquitectura x86_64: "_addNumber", referenciado desde: _main en main.o ld: símbolo (s) no encontrado (s) para arquitectura x86_64 clang: error: el comando del enlazador falló con el código de salida 1 (use -v para ver la invocación)
Entonces, aunque se vincula correctamente, no puede encontrar los símbolos. He verificado ambos connm
(0000000000000d00 (__TEXT, __ texto) addNumber externo) y Hopper que esta función existe en el dylib.