由于 lib 错误,Visual Studio 未编译

Posted

技术标签:

【中文标题】由于 lib 错误,Visual Studio 未编译【英文标题】:Visual Studio is not compiling due to lib error 【发布时间】:2020-01-17 09:37:36 【问题描述】:

我安装了“Irrklang”声音库以将其包含在项目中,但每当我尝试编译时,我都会收到类似的错误

Severity    Code    Description Project File    Line    Suppression State
Error       unexpected token '\b'       C:\Users\HRJunior\Documents\IRRklang\lib\Winx64-visualStudio\irrKlang.lib   4

我在一个文件(irrklang.lib)中有大约 800 个,你知道吗?

VS 企业 2019 / W10 1903

【问题讨论】:

您似乎尝试将库文件构建为源文件。你不应该。相反,您应该与它链接。再解释一下:当你构建你的项目时,编译器会将源文件编译成目标文件。目标文件是具有生成机器代码的二进制文件。然后将这些目标文件传递给 链接器,该链接器将它们一起链接到可执行文件中。静态库(如您尝试使用的 .lib 文件)基本上是目标文件的存档。 IE。该库已编译,只需链接即可。 你不想编译二进制文件 【参考方案1】:

您需要在 项目属性 中指定 .lib 文件,看起来您可能已尝试将其包含在 #include 中。

如果您查看下载,您应该会看到一些文件和目录,例如:

lib\Winx64-visualStudio\irrKlang.lib bin\winx64-visualStudio\ 包含一些示例和 3 个 DLL include\ 包含一堆 .h 文件。 examples\ 包含一堆示例项目,包括 Visual Studio 解决方案。

所以我们这里有一个 DLL 库,带有一个导入库 (.lib) 和一堆头文件。

示例项目很适合用来比较,看看你的项目哪里出了问题。

如果您右键单击您的项目 -> 属性 -> 链接器 -> 常规。在 "Additional Library Directories" -> Edit 下添加一行包含.kib 文件的目录,例如C:\Users\HRJunior\Documents\IRRklang\lib\Winx64-visualStudio\(此时我会注意到,如果将项目交给其他人,该项目可能无法运行。您可以将 IRRklang 放在项目的子目录中,例如 C:\Users\HRJunior\Documents\CoolProject\thirdparty\IRRklang\lib\Winx64-visualStudio\ 然后在 MSVC 中使用 $(SolutionDir)thirdparty\IRRklang\lib\Winx64-visualStudio\,然后您可以给任何人C:\Users\HRJunior\Documents\CoolProject\,它应该可以工作)。

然后在 Linker -> Input 下,对于 Additional Dependencies -> Edit 添加一行 irrKlang.lib。或者在源代码中的某处添加行 #pragma comment(lib, "irrKlang.lib")

然后在 C/C++ -> General 下,对于 Additional Include Directories -> Edit 添加一行到包含标题的目录,C:\Users\HRJunior\Documents\IRRklang\include

此时您的项目应该构建,但尝试运行您会收到缺少 DLL 的错误,请将这 3 个 DLL 文件复制到包含您的 exe 的输出目录。您可以让 VS 自动执行此操作,方法是在 Build Events -> Post Build Event 的属性中使用复制命令,例如:xcopy "C:\Users\HRJunior\Documents\IRRklang\bin\winx64-visualStudio\*.dll" "$(OutDir)" /Y

【讨论】:

以上是关于由于 lib 错误,Visual Studio 未编译的主要内容,如果未能解决你的问题,请参考以下文章

Visual Studio 链接器未加载库

将 JNI 链接到 Visual Studio 2008

错误无法在 Visual Studio 社区 2013 中打开文件“mfc80u.lib”

Visual Studio 错误:由于出现错误,无法启动 Visual Studio:System.NullReferenceException

为啥在 Visual Studio 中编译 C++ 项目时出现致命错误“LNK1104:无法打开文件 'cryptlib.lib'?

将 QCharts 与 Visual Studio 2015 一起使用时未解析的外部符号