尝试在Visual Studio中链接libclang时链接错误

时间:2015-10-19 21:00:25

标签: c++ dll linker clang visual-studio-2015

我要做的是构建这个库: https://github.com/AustinBrunkhorst/CPP-Reflection 一切顺利,直到我与libclang链接发生这种情况:

1>Cursor.obj : error LNK2001: unresolved external symbol __imp_clang_CXXMethod_isStatic
1>Cursor.obj : error LNK2001: unresolved external symbol __imp_clang_getCursorType
1>Cursor.obj : error LNK2001: unresolved external symbol __imp_clang_Cursor_getMangling
1>Cursor.obj : error LNK2001: unresolved external symbol __imp_clang_getCXXAccessSpecifier
1>Cursor.obj : error LNK2001: unresolved external symbol __imp_clang_Cursor_getStorageClass
1>Cursor.obj : error LNK2001: unresolved external symbol __imp_clang_getCursorSpelling
1>Cursor.obj : error LNK2001: unresolved external symbol __imp_clang_visitChildren
1>Cursor.obj : error LNK2001: unresolved external symbol __imp_clang_getTypedefDeclUnderlyingType
1>Cursor.obj : error LNK2001: unresolved external symbol __imp_clang_getCursorDisplayName
1>Cursor.obj : error LNK2001: unresolved external symbol __imp_clang_CXXMethod_isConst
1>Cursor.obj : error LNK2001: unresolved external symbol __imp_clang_isCursorDefinition
1>Cursor.obj : error LNK2001: unresolved external symbol __imp_clang_getCursorLexicalParent
1>Cursor.obj : error LNK2001: unresolved external symbol __imp_clang_getCursorResultType
1>CursorType.obj : error LNK2001: unresolved external symbol __imp_clang_isConstQualifiedType
1>CursorType.obj : error LNK2001: unresolved external symbol __imp_clang_getNumArgTypes
1>CursorType.obj : error LNK2001: unresolved external symbol __imp_clang_getTypeDeclaration
1>CursorType.obj : error LNK2001: unresolved external symbol __imp_clang_getTypeSpelling
1>CursorType.obj : error LNK2001: unresolved external symbol __imp_clang_getArgType
1>CursorType.obj : error LNK2001: unresolved external symbol __imp_clang_getCanonicalType
1>MetaUtils.obj : error LNK2001: unresolved external symbol __imp_clang_disposeString
1>MetaUtils.obj : error LNK2001: unresolved external symbol __imp_clang_getCString
1>ReflectionParser.obj : error LNK2001: unresolved external symbol __imp_clang_getTranslationUnitCursor
1>ReflectionParser.obj : error LNK2001: unresolved external symbol __imp_clang_createTranslationUnitFromSourceFile
1>ReflectionParser.obj : error LNK2001: unresolved external symbol __imp_clang_createIndex
1>ReflectionParser.obj : error LNK2001: unresolved external symbol __imp_clang_disposeIndex
1>ReflectionParser.obj : error LNK2001: unresolved external symbol __imp_clang_disposeTranslationUnit

我正在构建64位版本,并且我还在64位/发布模式下从源代码手动构建llvm / clang。 我不知道是否重要(?),但我正在使用来自github的clang的主分支。考虑到一切都过去了,直到链接阶段我认为,一切都应该是主分支。

我正在使用Visual Stduio 2015。

在项目选项中,我添加了附加库目录以指出clang具有* .lib文件的位置。

1 个答案:

答案 0 :(得分:2)

除了在Linker ->additional library directories中指定其路径外,您还需要在属性对话框的.lib部分中明确登记要链接的特定Linker->Input->Additional Dependencies文件。

另外,请再次检查lib文件的路径和版本是否正确(x86 vs x64)。

如果没有lib文件,链接器无法解析其实现的名称(符号),因此unresolved symbol链接器错误。

如果您有兴趣进一步了解,这是一个很好的资源 - http://www.lurklurk.org/linkers/linkers.html