Приветствую, господа.
Есть библиотека
.so
. Разделяемая, использую Linux. Суть в том, что в этой библиотеке символы (имена функций) имеют не специфичные для
С
имена. Например
crpt.Sha2
- т.е. имена содержат точку, что для C непозволительно. Да я знаю, что с помощью
objcopy
все символы можно переименовать. Вопрос как раз в том, существует ли способ не манипулируя библиотекой, а, скажем, подправив заголовки исправить ситуацию? Или всё таки это нереально?
P.S.: я не имею ввиду
dlopen
и
dlsym
и пр., интересует реально ли в заголовках переписать/переименовать/заменить (простите, не знаю как выразится) имя символа, чтобы в программе использующей библиотеку оно выглядело по другому (так как схавает Си).
P.P.S.: Компилятор
gcc
, переносимость не интересует. Использование иных инструментов, кроме "стандартного набора" (gcc, ld, ...) не предполагается.
Решение найдено
Вобщем то нашёл одно
решенице, редактирую заголовки
extern void* crpt_Sha2(void*) asm("crpt.Sha2");
и всё прекрасно работает. Даже со свистом. (Вызываю уже функцию
crpt_Sha2
).
Всем спасибо - коллективный разум - это мощь.
Может у Вас есть альтернативные решения?