C++ Expat未解析的外部符号

C++ Expat未解析的外部符号,c++,linker-errors,unresolved-external,xmp,C++,Linker Errors,Unresolved External,Xmp,当链接静态库XMP和共享库中包含的expat(这是firefox xpcom组件)时,我很难找到为什么会有未解析的外部符号 我在windows下使用windows编译器标志:-Od-MDd和mozilla firefox 14 静态库是来自AdobeXMP的SDK的XMPCore库:构建它没有问题,expat的源代码作为第三方库的一部分提供 在构建xpcom模块时,我在链接阶段得到了以下信息: 符号外部非résolu表示未解析的外部符号 所以我认为我的XMP静态构建中缺少expat中的那些函数,

当链接静态库XMP和共享库中包含的expat(这是firefox xpcom组件)时,我很难找到为什么会有未解析的外部符号

我在windows下使用windows编译器标志:-Od-MDd和mozilla firefox 14

静态库是来自AdobeXMP的SDK的XMPCore库:构建它没有问题,expat的源代码作为第三方库的一部分提供

在构建xpcom模块时,我在链接阶段得到了以下信息:

符号外部非résolu表示未解析的外部符号

所以我认为我的XMP静态构建中缺少expat中的那些函数,所以我使用objdump-t检查并列出了我发现的符号:



../third-party/expat/lib/xmlparse.obj:     file format pe-i386

SYMBOL TABLE:
...
[109](sec  5)(fl 0x00)(ty  20)(scl   2) (nx 0) 0x00000ff0 _XML_SetCommentHandler
...

../XMPCore/source/ExpatAdapter.obj:     file format pe-i386

SYMBOL TABLE:
...
[251](sec  0)(fl 0x00)(ty   0)(scl   2) (nx 0) 0x00000000 __imp__XML_SetCommentHandler
...
这些函数的实现包括在内,所以我需要提示:有人能帮我吗


谢谢

我发现了错误:Adobe XMP SDK的自述文件不完整,因为如果要使用expat-DXML\u STATIC构建静态库,他们忘了在编译阶段定义XML\u STATIC。希望它能帮助其他人解决同样的问题

我发现了我的错误:Adobe XMP SDK的自述文件不完整,因为如果您想使用expat-DXML\u STATIC构建静态库,他们忘记了在编译阶段定义XML\u STATIC。希望它能帮助其他有同样问题的人

你能解释一下怎么做吗?感谢CMake,您可以在CMakeLists.txt的第3行或第4行添加以下行:add_compile_definitionsXML_STATIC。我使用它是为了成功编译适用于Windows的LibKML 1.3.0。这是一个真正的麻烦,但最终我能够创建一些静态库,并在我的项目中使用该库。非常感谢这篇评论的作者,一个真正的救命恩人!如果您在Windows上使用带有CMake的LibXml2进行编译,则需要使用add_compile_definitionsLIBXML_STATIC添加LIBXML_静态定义,否则会出现很多u imp_xml*错误。使用libxml2-2.9.10进行测试,您能解释一下如何做到这一点吗?感谢CMake,您可以在CMakeLists.txt的第3行或第4行添加以下行:add_compile_definitionsXML_STATIC。我使用它是为了成功编译适用于Windows的LibKML 1.3.0。这是一个真正的麻烦,但最终我能够创建一些静态库,并在我的项目中使用该库。非常感谢这篇评论的作者,一个真正的救命恩人!如果您在Windows上使用带有CMake的LibXml2进行编译,则需要使用add_compile_definitionsLIBXML_STATIC添加LIBXML_静态定义,否则会出现很多u imp_xml*错误。使用libxml2-2.9.10进行测试


../third-party/expat/lib/xmlparse.obj:     file format pe-i386

SYMBOL TABLE:
...
[109](sec  5)(fl 0x00)(ty  20)(scl   2) (nx 0) 0x00000ff0 _XML_SetCommentHandler
...

../XMPCore/source/ExpatAdapter.obj:     file format pe-i386

SYMBOL TABLE:
...
[251](sec  0)(fl 0x00)(ty   0)(scl   2) (nx 0) 0x00000000 __imp__XML_SetCommentHandler
...