1

假设我有两个文件 main.c 和 func.c func.c 是从 main.c 的 main 函数调用的。通常,我会生成 main.o 和 func.o 并且链接器会找到 func 的定义并将其绑定到它在 main .c 中的调用

现在,我想通过 libclang API 做同样的事情。这是我正在制作的 Doxygen 类型代码浏览实用程序。我能够解析这两个文件。从这里开始,我不知道如何进行。我应该生成 *.o 文件并让 clang 链接它们吗?

谢谢,我希望我问的问题很清楚

4

1 回答 1

3

不,不需要将代码实际编译为目标文件。

可以使用 USR(统一符号解析)建立两个翻译单元中符号之间的链接。当您在翻译单元的 AST 中找到有趣的位置时(由CXCursorlibclang 中的 a 表示),调用clang_getCursorUSR()以获取关联的 USR。

如果两个CXCursor具有相同的 USR,即使在两个不同的翻译单元中,它们也关联到相同的符号。

于 2013-08-05T15:07:23.717 回答