Короче, я ищу способ справиться с этим без сбоев процесса:
dyld: lazy symbol binding failed: Symbol not found: _evalstring
Referenced from: /Users/nrser/src/gh/nrser/my_first_ext/ext/my_first_ext/my_first_ext.bundle
Expected in: flat namespace
dyld: Symbol not found: _evalstring
Referenced from: /Users/nrser/src/gh/nrser/my_first_ext/ext/my_first_ext/my_first_ext.bundle
Expected in: flat namespace
./bin/console: line 2: 69989 Abort trap: 6 bundle exec pry -f -r my_first_ext
Есть ли способ узнать, присутствует ли evalstring
перед выполнением вызова, или перехватить ошибку в функции и вернуть что-то еще?
Пока что ресурсы, которые я смог найти, направлены на то, чтобы не допустить возникновения ошибки, а не обрабатывать ее, когда это происходит.
Для контекста, у меня есть некоторый C, который работает как внутри Bash, "загружаемого", где доступен Bash's evalstring
, так и вне его, где evalstring
нет.
Ошибка вызывать функции, которые зависят от evalstring
, если только они не находятся внутри загружаемого, но я бы предпочел сделать что-то более приятное, чем аварийное завершение процесса, если пользователи это сделают.
Подробнее
Функция evalstring
объявлена как
extern int evalstring __P((char *, const char *, int));
в <BASH_DIR>/include/bash/builtins/common.h
, по крайней мере, так, как думает моя IDE.
Я понимаю, что переносимость может быть проблемой. В настоящее время я ориентируюсь на Linux и macOS / OSX.