1

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

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

4

2 回答 2

2

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

我希望它有所帮助。

于 2014-10-09T17:39:52.050 回答
1

为超迟回复道歉。您应该链接一个预先构建的库!

您可以使用该-l标志将动态库加载到 Cling 中:

$ 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"
于 2017-08-14T17:12:53.357 回答