我正在将一些在 Linux 下使用 cmake 和 gcc 编译的 c++ 代码移植到更大的 Windows 项目中。我们使用的是Microsoft Visual Studio 2013,该项目是一个简单的命令行工具,内置发布模式,x64。链接 libxml2 和 libxslt 时,我收到一堆链接器错误。首先我尝试下载预构建的二进制文件,但是当这不起作用时,我尝试自己构建 libxml2 和 libxslt。我下载了 libxml2-2.7.8 的源代码,并像这样构建它:
cscript configure.js compiler=msvc-12.0 modules=no http=no ftp=no python=no schematron=no iconv=no static=yes
nmake
这很成功,产生了 libxml2.lib 和 libxml2_a.lib。然后,我将这些库的路径添加到我的项目设置中的链接器路径中,并将库名称添加到链接器输入的附加依赖项中。我对 libxslt 遵循了这些相同的说明。在 MSVC 中构建项目时,出现以下错误:
Error 1 error LNK2001: unresolved external symbol xsltParseStylesheetFile C:\Users\aday\Source\Workspaces\Illumina.Isis\Dev\Trunk\Src\bcl2fastq\DemuxReportGenerator.obj bcl2fastq
Error 2 error LNK2001: unresolved external symbol xmlSubstituteEntitiesDefault C:\Users\aday\Source\Workspaces\Illumina.Isis\Dev\Trunk\Src\bcl2fastq\DemuxReportGenerator.obj bcl2fastq
Error 3 error LNK2001: unresolved external symbol xmlFreeDoc C:\Users\aday\Source\Workspaces\Illumina.Isis\Dev\Trunk\Src\bcl2fastq\DemuxReportGenerator.obj bcl2fastq
Error 4 error LNK2001: unresolved external symbol xmlCleanupParser C:\Users\aday\Source\Workspaces\Illumina.Isis\Dev\Trunk\Src\bcl2fastq\DemuxReportGenerator.obj bcl2fastq
Error 5 error LNK2001: unresolved external symbol xsltCleanupGlobals C:\Users\aday\Source\Workspaces\Illumina.Isis\Dev\Trunk\Src\bcl2fastq\DemuxReportGenerator.obj bcl2fastq
Error 6 error LNK2001: unresolved external symbol xmlLoadExtDtdDefaultValue C:\Users\aday\Source\Workspaces\Illumina.Isis\Dev\Trunk\Src\bcl2fastq\DemuxReportGenerator.obj bcl2fastq
Error 7 error LNK2001: unresolved external symbol xsltFreeStylesheet C:\Users\aday\Source\Workspaces\Illumina.Isis\Dev\Trunk\Src\bcl2fastq\DemuxReportGenerator.obj bcl2fastq
Error 8 error LNK2001: unresolved external symbol xsltApplyStylesheet C:\Users\aday\Source\Workspaces\Illumina.Isis\Dev\Trunk\Src\bcl2fastq\DemuxReportGenerator.obj bcl2fastq
Error 9 error LNK2001: unresolved external symbol exsltRegisterAll C:\Users\aday\Source\Workspaces\Illumina.Isis\Dev\Trunk\Src\bcl2fastq\DemuxReportGenerator.obj bcl2fastq
Error 10 error LNK2001: unresolved external symbol xmlParseFile C:\Users\aday\Source\Workspaces\Illumina.Isis\Dev\Trunk\Src\bcl2fastq\DemuxReportGenerator.obj bcl2fastq
我不知道为什么会发生这些链接器错误。库在路径中,并明确链接。如果我将库移到一边并尝试构建,我会收到一条错误消息,告诉我找不到文件。所以我知道它可以看到文件,但由于某种原因它无法从中读取符号。我尝试使用所有可能的参数组合来构建库,但没有成功。我尝试链接 libxml2_a.lib 和 libxml2.lib。我成功地链接到类似构建的 boost 库。为什么我会收到这些链接器错误?