Die allgemeine Antwort ist, dass Sie nicht können, aber es gibt ein paar Tricks, die Sie tun können.
Zum Beispiel objcopy von binutils hat die Fähigkeit, ein Objekt zu kopieren, setzen, aber einen Präfix zu jedem Symbol unter Verwendung der prefix-Symbole Flagge. Dinge voranzustellen ist oft der Namensraum des armen Mannes und ist ein "ok" Weg Konflikte zu vermeiden.
Verwendung ist ziemlich einfach, so etwas wie diese:
objcopy --prefix-symbols "__mylib_" object.o new_object.o
HINWEIS: ja, es funktioniert mit .so zu Dateien.
HINWEIS 2: Dies wird C++ Namen Mangling vollständig brechen, also versuchen Sie dies nur auf eine Bibliothek mit einem C-Stil-API. Da Sie davon sprechen, einen Namespace hinzuzufügen, in dem es keinen gibt, gehe ich davon aus, dass dies der Fall ist.
Ich habe gerade die OpenCV-Website angeschaut. Es sieht so aus, als ob allen Funktionen ein "cv" vorangestellt ist. Während Namespaces eine bessere Lösung sind, frage ich mich, haben Sie tatsächliche Symbolkollisionen? –
Ich habe keine tatsächlichen Kollisionen, es ist nur um die Dinge organisiert zu halten, da ich Wrapper von einigen openCV Datenstrukturen mache und sie in den gleichen Namespace legen möchte. –