Простая общая библиотека MacOS - PullRequest
0 голосов
/ 10 января 2020

Я пытаюсь создать разделяемую библиотеку на MA C, используя следующий простой пример на https://developer.apple.com/library/archive/documentation/DeveloperTools/Conceptual/DynamicLibraries/100-Articles/CreatingDynamicLibraries.html

Я действительно перебил одну функцию, чтобы попытаться получить функцию, экспортируемую clang в библиотеку. Мой исходный код выглядит следующим образом:

#define EXPORT __attribute__((visibility("default")))

EXPORT
void foo(){
    int x = 1 + 3;  
}

моя строка компиляции

clang -dynamiclib lib.c -current_version 1.0  -compatibility_version 1.0 -fvisibility=hidden -o lib.dylib

Это прекрасно компилируется и создает lib.dylib на моем macbook. Теперь я ожидаю, что инструмент nm покажет мой экспорт foo (), но метод foo не выставлен

nm -gu lib.dylib

возвращает только

dyld_stub_binder

Я бился головой об этом день, и это не имеет смысла. Кто-нибудь знает, что не так с этим подходом.

1 Ответ

1 голос
/ 11 января 2020

Ответ в том, что использование nm не выдает того, что я ожидал. Я обнаружил, что вызов метода действительно работает с использованием этих шагов. Я написал другую программу, которая использует эту библиотеку в качестве теста в ней работает нормально. Потратил слишком много времени на неправильное тестирование решения.

...