2013-08-03 29 views
1

假設我有兩個文件main.c和func.c func.c從main.c的main函數中調用。通常情況下,我會生成main.o和func.o,鏈接器會找到func的定義並將其與主要的調用綁定.cLibclang API以獲取在不同文件中定義的函數定義

現在,我想通過libclang API來做同樣的事情。這是我正在做的一個Doxygen類型的代碼瀏覽工具。我能夠解析這兩個文件。從這裏開始,我不知道該怎麼做。 我應該生成* .o文件並使鐺鏈接它們嗎?

謝謝,我希望我在問這個問題

+0

請注意,doxygen(自版本1.8.4開始)也可以選擇使用libclang來執行源瀏覽。所以你可能想先嚐試一下,或者看看src/clangparser.cpp來看看doxygen是如何做到的。 – doxygen

回答

2

沒有,也沒有必要對實際編譯代碼到目標文件明確。

可以使用USR(統一符號分辨率)建立兩個翻譯單元中符號之間的鏈接。當您在翻譯單元的AST中找到一個有趣的地方(在libclang中用CXCursor表示)時,請致電clang_getCursorUSR()以獲取關聯的USR。

如果兩個CXCursor具有相同的USR,即使在兩個不同的翻譯單元中,它們也會關聯到同一個符號。

+0

非常感謝。雖然我不完全明白你說的話,但我明白了。我會看看USR和CXCursor並且工作。 – user763410

+0

沒問題。如果您遇到新問題,請隨時提出其他問題,或者如果您有更具體的問題,請提出其他問題。 – Francesco

相關問題