c++ - 有没有办法在编译时添加命名空间?

标签 c++ compilation

我需要为应用程序编写一个插件,该应用程序静态包含某个使用 namespace 的 C++ 库。

不幸的是,我的插件需要链接到同一个库的自定义版本。

理想情况下,我想重新编译它,使其符号不会与应用程序中的符号冲突。

一种方法可以做到这一点,而不必编辑数百个文件,也不会失去从上游应用新更新的能力,在编译时向库添加命名空间前缀时间

显然,虽然没有 g++ 选项可以做到这一点。或者,是否有任何方法可以通过编程方式更改已编译的 .so 文件中的符号?


编辑:澄清一下,问题不在库-插件边界,那是“简单”的部分;问题是我有这个庞大的库,我想找到一种方法来重新编译它,就好像它都属于某个命名空间一样不必更改源代码。

最佳答案

我没有看到一个简单的解决方案。您可以编写 GCC pluginGCC MELT 中的扩展名完成这项工作,但这可能是太多的工作。

如果库是免费的,并且允许您更改它,我会制作补丁并将它们推送到上游(即使这确实需要一些时间)。

关于c++ - 有没有办法在编译时添加命名空间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8011535/

相关文章:

c++ - 嵌套std::arrays中的数据是否保证是连续的?

c++ - Boost语言环境规范化带状字符但不带重音符号

command-line - 从命令行构建以生成适用于 Mac OS 10.5(和 10.6)的二进制文件

macos - 是否可以为 High Sierra/Mojave 编译静态/可移植版本的 ImageMagick?

c++ - 为什么不是来自 std::array 双向/随机访问的 ConstexprIterator?

c++ - 在 C++ 代码中计算斐波那契数列

c++ - 如何显示窗口大小不同的输出图像?

c++ - 如何使用 OpenSSL 编译一个简单的程序?

c# - 如何解决依赖项不复制的问题

java - Janino动态编译接口(interface)类