С GCC, как я экспортирую только определенные функции в статической библиотеке?

Поскольку другие показали, можно переопределить добавить/удалить свойства события. С другой стороны, можно хотеть угробить событие и просто иметь класс, берут делегата в качестве аргумента в его конструкторе (или некоторый другой метод), и вместо того, чтобы запустить событие, звонят предоставленному делегату.

События подразумевают, что любой может подписаться на них, тогда как делегат один метод, который можно передать классу. Вероятно, будет менее удивительным пользователю Вашей библиотеки тогда, если Вы только будете использовать события, когда Вы на самом деле wnat one-many семантика она обычно предлагает.

9
задан Will 1 October 2009 в 09:41
поделиться

2 ответа

Самое простое решение - это # ​​включить test1.c и test2.c в library_api.c и скомпилировать только этот файл. Затем вы можете сделать test1 () и test2 () статическими.

В качестве альтернативы вы можете объединить объектные файлы с помощью ld -r и использовать objcopy --localize-symbols для сделайте тестовые функции статическими после компоновки. Поскольку это может быть довольно утомительно, я действительно рекомендую первый вариант.

9
ответ дан 3 November 2019 в 01:02
поделиться

ld имеет параметр

- сохранить-файл-символов ФАЙЛ Сохранять только символы, перечисленные в ФАЙЛЕ

, чтобы вы могли явно называть символы, которые вы хотите держать.

2
ответ дан 3 November 2019 в 01:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: