我在Windows 7上安装了VS 2010.我创建了一个新项目,选择了c ++语言,Win32项目,DLL,导出符号,然后完成。现在,当我编译项目而没有对VS生成的任何更改时,我得到......
LINK:致命错误LNK1181:无法打开输入文件“■/ .obj”
我也在同一台机器上安装了VS 2008。我按照相同的步骤进行编译。我做错了什么?
修改 好的,我发现这个错误是由于使用了旧版本的链接器。我不知道为什么。在VS2010中,项目目录的设置与VS2008中的设置不同。一旦我明白了,也许我可以解决自己的问题。
答案 0 :(得分:8)
自发布此问题以来已经有一段时间了。我找到了一个解决方法,所以现在我要自己回答。但如果您有任何更好的想法或其他人可以从中受益的其他信息,请发布。
我发现创建C ++项目后,我需要删除“Microsoft.Cpp.Win32.User”属性表。如果我没有,那么我得到上面的奇怪错误,但如果我删除它们,简单的项目编译好。删除它们......
答案 1 :(得分:2)
Visual Studio 2012 - LINK:致命错误LNK1181:无法打开输入文件“■/ .obj” 我正在使用VS 2012 !!!!
我已经跟踪了这一点。 对我来说,当我尝试构建应用程序的x64位版本时,这不会发生。我发现我的项目.vcxproj有一个'ImportGroup Condition',如下所示:
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
我的x64版本中还有一个看起来像这样:
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
所以我看了看文件:
Users\??????????\AppData\Local\Microsoft\MSBuild\v4.0
Microsoft.Cpp.Win32.user.props
Microsoft.Cpp.x64.user.props
不同之处在于各自不同。 x64基本上是空的,而Win32中有三个路径。
Win32版本的部分包含三个路径,<ExecutablePath>
,<IncludePath>
和<LibraryPath>
。
我发现删除<ExecutablePath>
路径会导致此问题消失。我正在深入研究这条道路,看看是否有什么东西突然出现在我身上,但我想我会把它传递下去,万一其他任何人都可以找到这条道路的错误。
答案 2 :(得分:0)
在Visual Studio 2017中编译VC ++项目时,我也遇到了同样的问题。编译器抱怨如下。
LINK : fatal error LNK1181: cannot open input file " ■/.obj"
在分析问题时,发现项目&#34;配置属性 - VC ++目录 - 可执行目录&#34;如下所示包含Microsoft Visual Basic文件夹C:\Program Files (x86)\Microsoft Visual Studio\VB98
的路径,该文件夹具有自己的link.exe
。
由于Visual Studio正在调用Visual Basic链接器而不是Visual C ++链接器,因此发生了链接器错误!
发生这种情况是因为Visual Basic链接器的路径在上面的对话框中列出了 first ,因此Visual Studio首先遇到Visual Basic linker.exe,同时通过可执行目录的路径。
其中一个解决方案是通过将路径移动到VB98文件夹从第一个到最后一个来更新可执行目录中包含路径的顺序。可以通过编辑Microsoft.Cpp.Win32.user.props
目录中存在的$(USERPROFILE)\appdata\local\microsoft\msbuild\v4.0
等必需的属性文件来实现。
答案 3 :(得分:0)
以我为例(VS 2017),我必须在链接程序->其他依赖项中删除以下条目:
\
$(INHERIT)\
可能是Qt预处理器添加的。