在命令行中编译库时出错

Posted

技术标签:

【中文标题】在命令行中编译库时出错【英文标题】:Errors when compiling library in command line 【发布时间】:2012-05-07 11:22:20 【问题描述】:

我正在尝试编译这个库:http://www.mega-nerd.com/SRC/win32.html。但我遇到了一些麻烦。以下是发生的事情:

C:\libsamplerate-0.1.8>make
    1 file(s) copied.
    1 file(s) copied.

Microsoft (R) Program Maintenance Utility Version 10.00.30319.01
Copyright (C) Microsoft Corporation.  All rights reserved.

    link.exe /nologo /dll /incremental:no /libpath:""C:\Program Files (x86)\
Microsoft Visual Studio 10.0\Common7\IDE"\Lib" /pdb:"libsamplerate-0.pdb" /impli
b:".\libsamplerate-0.lib" /machine:I386 /out:"libsamplerate-0.dll" /def:".\Win32
\libsamplerate-0.def" ".\src\samplerate.obj"  ".\src\src_linear.obj"  ".\src\src
_zoh.obj"  ".\src\src_sinc.obj"
LINK : fatal error LNK1181: cannot open input file 'Files.obj'
NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio 10.0
\VC\BIN\link.exe"' : return code '0x49d'
Stop.

我在尝试编译之前运行 vcvars32.bat,我认为我的路径变量中有所有正确的文件夹,但我是新手,所以我不完全确定。我做错了什么?

【问题讨论】:

【参考方案1】:

您对以下行有引用问题: /libpath:""C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE"\Lib"

应该是: /libpath:"C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\Lib"

【讨论】:

【参考方案2】:

检查kb 815645 是否没有帮助:

您在构建托管 C++ 应用程序时收到“fatal error LNK1181”错误消息

fatal error LNK1181: cannot open input file 'C:\Program.obj'

场景 2:

如果您将不合格的文件添加到 Additional Dependencies 项目属性,并且该文件不存在于 LIB 环境变量或 @ 987654326@项目物业。 您可以将包含库文件的目录添加到LIBPATH 以解决问题:

在解决方案资源管理器中,右键单击项目,然后单击“属性”。 在“属性页”对话框中,展开“链接器”,然后单击“常规”。 在 Additional Library Directories 字段中,指定所需的库路径。

【讨论】:

【参考方案3】:

您收到错误:“链接:致命错误 LNK1181:无法打开输入文件 'Files.obj'” 因为链接器认为您正在添加文件“文件”作为输入库之一。 这来自“C:\Program Files (x86)”(参见“文件”?);-)

【讨论】:

以上是关于在命令行中编译库时出错的主要内容,如果未能解决你的问题,请参考以下文章

Rails:运行 wkhtmltopdf 时出错——(加载共享库时出错)

如何在命令行中编译和链接项目?

在 MSVC 2010 命令行中强制 32 位编译

如何在 Windows 的命令行中使用 MinGW 编译器?

使用 Makefile 编译失败但在命令行中成功

在 Visual Studio 中编译与在命令行中使用 cl 编译