My main.swift has a function
@_cdecl("my_add") // export to C as intptr_t my_add(intptr_t, intptr_t);
public func add(x: Int, y: Int) -> Int {
return x + y
}
I compiled main.swift to main.so and then used for this C code:
#include <dlfcn.h>
#include <stdio.h>
int main() {
void *b = dlopen("./main.so", RTLD_NOW);
void *c = dlsym(b, "my_add");
printf("%p\n", c);
printf("%s\n", dlerror());
}
The result was:
(nil)
./main.so: undefined symbol: my_add
I used readelf to check my_add
function
$ readelf -s main.so | grep my_add
31024: 00000000000525c0 15 FUNC GLOBAL PROTECTED 12 my_add
How can I export my_add function to use by C code?