У меня есть библиотека C в файле архива, clib.a
. Я написал для него оболочку C++, cpp.o
, и хотел бы использовать ее как статическую библиотеку:
ar cTrvs cppwrap.a clib.a cpp.o
Код, который ссылается на это, не сможет использовать материал из clib.a
напрямую, если не включен правильный заголовок. Однако, если кто-то случайно создаст подходящий прототип, например. void myCoincidentallyNamedGlobalFunction()
-- Меня интересует, какое определение myCoincidentallyNamedGlobalFunction
будет применяться.
Поскольку к символам из clib.a
нужно обращаться только в cpp.o
, а не к чему-либо, связанному с cppwrap.a
, есть ли способ полностью скрыть их, чтобы не было возможной коллизии (так что даже включение заголовка clib не удастся)?
clib.o
вы создаете сами или представляете собой монолитный двоичный файл, который вам вручил кто-то другой и который вы хотите обернуть? - person Jeff   schedule 15.05.2014strip -N
илиobjcopy -N
символов, которые вы не хотите отображать, из вашей окончательной распределенной библиотеки. - person Jeff   schedule 15.05.2014cpp.o
сclib.o
вcppwrap.a
, не экспортируя символы изclib.o
черезcppwrap.a
?clib.o
на самом деле является архивом (clib.a
), если это имеет значение (я редактировал вопрос в связи с этим) - person CodeClown42   schedule 15.05.2014