Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Visual Studio:链接:致命错误LNK1181:无法打开输入文件_C++_Visual Studio_Compiler Construction - Fatal编程技术网

C++ Visual Studio:链接:致命错误LNK1181:无法打开输入文件

C++ Visual Studio:链接:致命错误LNK1181:无法打开输入文件,c++,visual-studio,compiler-construction,C++,Visual Studio,Compiler Construction,我在VisualStudio2010中遇到一个奇怪的bug已有一段时间了 我有一个解决方案,由一个编译成静态库的项目和另一个非常简单但依赖于此库的项目组成 有时,在最近几天极其频繁地重建解决方案或仅使用1-3个已更改的源文件编译解决方案后,我会出现以下错误: 2>LINK : fatal error LNK1181: cannot open input file 'thelibrary.lib' ========== Rebuild All: 1 succeeded, 1 failed,

我在VisualStudio2010中遇到一个奇怪的bug已有一段时间了

我有一个解决方案,由一个编译成静态库的项目和另一个非常简单但依赖于此库的项目组成

有时,在最近几天极其频繁地重建解决方案或仅使用1-3个已更改的源文件编译解决方案后,我会出现以下错误:

2>LINK : fatal error LNK1181: cannot open input file 'thelibrary.lib'
========== Rebuild All: 1 succeeded, 1 failed, 0 skipped ==========
其中编译library.lib成功,没有任何错误或警告

我试过清洗溶液,但并不总是有效

  • 这里怎么了

    • 我只能看到这里发生了1件事:
      您没有在项目中正确设置对library.lib的依赖关系,这意味着library.lib是以错误的顺序生成的(或者如果同时有超过1个CPU生成配置,这也可以解释错误的随机性)。(您可以在:菜单->项目->项目依赖项中更改项目依赖项)

      可能您有硬件问题


      我的旧系统(AMD1800MHz CPU,1GB内存,Windows7Ultimate)也有同样的问题,直到我将2x512MB内存更改为2x1GB内存。从那以后就没有任何问题了。其他(次要)问题也消失了。我猜这两个512 MB模块彼此不太喜欢,因为2x 512 MB+1GB1x 512 MB+2x 1GB也不能正常工作

      我最近也犯了同样的错误。一些挖掘者提出了这一点:

      基本上,如果在.lib的路径中有空格,那就不好了。我不知道这是否是发生在你身上的事情,但似乎是有可能的

      修复方法是1)将库引用放在“引号”中,或2)将库的路径添加到库目录(配置属性>>VC++目录)。

      转到:

      Project properties -> Linker -> General -> Link Library Dependencies set No.
      

      在链接器的“常规”附加库目录中,将该目录添加到链接器的“输入”中包含的.dll或.libs中。
      如果你把它放在VC++目录、库目录中,它就不起作用了。

      我有一个类似的问题,我在项目本身的
      .OBJ
      文件上遇到了
      LINK1181
      错误(整个项目中只有2个.cxx文件)

      最初,我将项目设置为在Visual Studio中生成一个
      .EXE
      ,然后在
      属性页->配置属性->常规->项目默认值->配置类型
      ,我将.EXE更改为.DLL。我怀疑VisualStudio2008有点混乱,于是从一开始就使用.DLL模式从头开始重新创建了整个解决方案。从那以后问题就消失了。我想,如果您手动选择.vcproj和其他相关文件,您可以找到如何在不从头开始的情况下解决问题(但我的程序由两个.cpp文件组成,因此更容易重新开始)

      我用以下方法解决了这个问题:

      转到查看->属性页->配置属性->链接器->输入


      在“其他依赖项”下添加thelibrary.lib。不要引用任何引文。

      我正陷入同一个问题。对我来说,这似乎是因为有两个同名的项目,一个依赖于另一个

      例如,我有一个名为Foo的项目,它生成Foo.lib。然后我有另一个名为Foo的项目,它在Foo.lib中生成Foo.exe和链接

      我观看了带有进程监视器的文件活动。似乎发生的事情是首先构建Foo(lib)——这是正确的,因为Foo(exe)被标记为依赖于Foo(lib)。这一切都很好,构建成功,并被放置在输出目录--$(OutDir)$(TargetName)$(targetText)中。然后触发Foo(exe)进行重建。嗯,重建是一个干净的,然后是一个构建。似乎Foo.exe的“清理”阶段正在从输出目录中删除Foo.lib。这也解释了为什么后续的“构建”可以工作——它不会删除输出文件

      我猜是VS中的一个bug


      不幸的是,我没有解决这个问题的办法,因为它涉及重建。一种解决方法是手动发布Clean,然后构建。

      我在project\u dir级别创建了一个
      bin
      目录,然后在
      bin
      文件夹中创建了一个
      release/debug
      目录,这为我解决了问题。

      我在VS 2010和VS 2012中都遇到了同样的问题。 在我的系统上,构建了第一个静态库,然后在主项目开始构建时立即被删除

      问题在于多个项目的公共中间文件夹。只需为每个项目分配单独的中间文件夹


      我不知道为什么,但将链接器->输入->附加依赖项引用从“dxguid.lib”更改为“C:\Program Files(x86)\Microsoft DirectX SDK(2010年6月)\lib\x86\dxguid.lib”(在我的情况下)是唯一有效的方法。

      对我来说,问题是错误的
      包含
      目录。我不知道这为什么会导致看起来缺少lib的错误,因为include目录只包含头文件。并且库目录设置了正确的路径

      您还可以通过以DOS“8.3”格式指定库路径来解决路径中的空格问题

      要获取8.3表单,请执行以下操作(在命令行中):


      递归地遍历每一级目录。

      我也遇到了同样的问题。通过定义包含所有链接器对象的宏
      对象
      解决了此问题,例如:

      OBJECTS = target.exe kernel32.lib mylib.lib (etc)
      
      然后在链接器的命令行上指定
      $(对象)


      不过,我不使用Visual Studio,只使用nmake和.MAK文件

      在具有长参数列表的Windows上从cmd运行lib.exe时,我遇到了相同的错误。显然,cmd.exe的最大行长约为8K个字符,这导致此阈值末尾的文件名发生更改,从而导致错误
      OBJECTS = target.exe kernel32.lib mylib.lib (etc)
      
      /LIBPATH:absolute_path /OUT:outfilename filename1.obj filename2.obj ... filenameN.obj
      
      <Link><AdditionalLibraryDirectories>..\..\Build\lib\$(Configuration)**..\..\Build\Release;**%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      
      <Link><AdditionalLibraryDirectories>..\..\Build\lib\$(Configuration)**;..\..\Build\Release;**%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>