如何使用Cling在REPL中修补大型C++库



Cling听起来是一个很好的方法,可以用来修改大型库的API以用于学习。不幸的是,甚至没有关于如何开始使用它的文档或教程。我不断遇到丢失的符号,不得不一次又一次地在源代码上使用C++filt和rgrep来确定要加载什么库或头,直到我放弃。

从源代码JIT整个库的策略正确吗?还是应该链接到预先构建的库?

在头文件和库之间建立链接的一种方法是生成自动加载映射(http://cling.web.cern.ch/cling/doxygen/classcling_1_1Interpreter.html#ad56b40974d204f85e9fc0a9fa9af1660)。可以在构建时生成它,并在静态初始化期间在库中添加一个钩子。因此,用户将执行以下操作:.L myLib这反过来会触发标头包含。另一种方式则更为棘手。看看https://github.com/vgvassilev/cling/tree/master/test/Autoloading

我希望它能有所帮助。

对超迟的回复表示歉意。你应该链接一个预先构建的库!

您可以使用-l标志将动态库加载到保鲜:

$ echo 'extern "C" const char* zlibVersion();
 zlibVersion()' | cling -lz

或者交互使用.L lib

[cling]$ .L libz
[cling]$ #include <zlib.h>
[cling]$ zlibVersion()
(const char * const) "1.2.3.4"

相关内容

  • 没有找到相关文章

最新更新