【问题标题】:Visual Studio 2013 LINK : fatal error LNK1181: cannot open input fileVisual Studio 2013 链接:致命错误 LNK1181:无法打开输入文件
【发布时间】:2015-08-31 05:54:18
【问题描述】:

我正在使用 Visual Studio 2013。我正在尝试构建一些教授给我的代码,但我不断收到此错误:

LINK:致命错误 LNK1181:无法打开输入文件 'C:\Users\manduchi\Documents\eyegaze\EyeGazeDemo..\Libraries\OpenCV\lib\opencv_core249.lib'

但是,在我的计算机上,opencv_core249.lib 位于其他位置。我已尝试将链接器目录更新为我计算机上的地址,但我仍然收到错误消息。

这是我的尝试:

  • 在配置属性-> VC++ 目录下,我在包含目录和库目录中添加了包含 .lib 文件的文件夹的地址。
  • Linker-> General 并在那里添加了一个额外的库目录。
  • Linker-> 输入并将“opencv_core249.lib”添加到其他依赖项中

我是 Visual Studio 和 C++ 的新手,所以我可能做错了?

更多信息:

  • 我正在我的 Windows 7 Bootcamp 上执行此操作
  • 代码在 U 盘上,因为我没有足够的空间 训练营分区。

任何帮助将不胜感激!谢谢

更新

更新错误信息

LINK:致命错误 LNK1181:无法打开输入文件 'opencv_calib3d300.lib'

我认为“opencv_calib3d300.lib”在链接器上->输入->继承值下的附加依赖项。

链接器命令行

/OUT:"debug\EyeGazeDemo.exe" /MANIFEST /NXCOMPAT /PDB:"debug\EyeGazeDemo.pdb" /DYNAMICBASE "glu32.lib" "opengl32.lib" "gdi32.lib" "user32.lib" " opencv_ts300.lib" "opencv_ts300d.lib" "opencv_world300.lib" "opencv_world300d.lib" "E:\Qt\5.0.2\msvc2012_64\lib\qtmaind.lib" "E:\Qt\5.0.2\msvc2012_64\lib \Qt5Cored.lib" "E:\Qt\5.0.2\msvc2012_64\lib\Qt5Widgetsd.lib" "E:\Qt\5.0.2\msvc2012_64\lib\Qt5Guid.lib" "opencv_calib3d300.lib" "opencv_contrib300.lib ” “opencv_core300.lib” “opencv_features2d300.lib” “opencv_flann300.lib” “opencv_gpu300.lib” “opencv_highgui300.lib” “opencv_imgproc300.lib” “opencv_legacy300.lib” “opencv_ml300d.lib” “opencv_nonfree300d.lib” “opencv_objdetect300d.lib” ” “opencv_ocl300d.lib” “opencv_photo300d.lib” “opencv_stitching300d.lib” “opencv_superres300d.lib” “opencv_video300d.lib” “opencv_videostab300d.lib” “kernel32.lib” “winspool.lib” “comdlg32.lib” “advapi32.lib” " "shell32.lib" "ole32.lib" "oleaut32.lib" "uuid.lib" "odbc32.lib" "odbccp32.lib" "OpenCVConfig.cmake" "OpenCVM odules.cmake" "OpenCVModules-debug.cmake" "OpenCVModules-release.cmake" "E:\eyegaze\eyegaze\Libraries\OpenCV\lib\opencv_core249d.lib" "E:\eyegaze\eyegaze\Libraries\OpenCV\lib\ opencv_imgproc249d.lib" "E:\eyegaze\eyegaze\Libraries\OpenCV\lib\opencv_highgui249d.lib" "E:\eyegaze\eyegaze\Libraries\OpenCV\lib\opencv_objdetect249d.lib" "E:\eyegaze\eyegaze\Libraries\ OpenCV\lib\opencv_ml249d.lib" "E:\eyegaze\eyegaze\Libraries\Intraface\lib\IntraFaceDLL-x86d.lib" /DEBUG /MACHINE:X86 /SAFESEH /INCREMENTAL:NO /PGD:"debug\EyeGazeDemo.pgd" /SUBSYSTEM:WINDOWS /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /ManifestFile:"Win32\Debug\EyeGazeDemo.exe.intermediate.manifest" /ERRORREPORT:PROMPT /NOLOGO /LIBPATH:"C:\opencv\ build\x64\vc12\x64\vc11\lib" /LIBPATH:"E:\Qt\5.0.2\msvc2012_64\lib" /LIBPATH:"E:\eyegaze\eyegaze\Libraries\OpenCV\lib" /LIBPATH:" E:\eyegaze\eyegaze\Libraries\Intraface\lib" /LIBPATH:"E:\eyegaze\eyegaze\EyeGazeDemo" /LIBPATH:"C:\opencv\build\x64\vc12\lib" /TLBID:1

【问题讨论】:

  • 请详细描述您更改链接器设置的步骤。
  • 我右键单击给我错误的项目。然后我点击属性。在 Configuration Properties-> VC++ Directories 下,我在 Include Directories 和 Library Directories 中添加了一些目录。我还去了 Linker-> General 并在那里添加了一个额外的库目录。最后我去了 Linker-> Input 并将“opencv_core249.lib”添加到其他依赖项中。
  • 看起来在“链接器输入”设置中直接设置了错误路径。也许在一个变量内。你能发布你的整个“链接器命令行”吗?
  • @Micka 我在帖子中包含了链接器命令行,谢谢!
  • 你的项目似乎想要opencv_core249.lib,而你有opencv_core300.lib 只是改变版本号?

标签: c++ visual-studio opencv visual-c++ visual-studio-2013


【解决方案1】:

删除对库的所有引用。该项目指向您在上面给出的路径的某个地方,您需要将其删除。

然后将库添加到可执行项目中。右键单击->添加->现有项目,将类型更改为所有文件,然后浏览到文件位置。

【讨论】:

  • 很抱歉,我该如何删除对库的所有引用?我需要查看代码或属性中的某处吗?
  • 在linker->input->additional dependencies下,去掉opencv_core249.lib。我建议这样做,因为它会尝试使用项目中的库路径组合来查找它,这可能很难检查。如果您随后使用上述方法添加它,您就会知道您是在要求 Visual Studio 查找正确的位置。您应该能够双击项目下方的 opencv_core249.lib 图标,并看到一个二进制文件。如果不是,则实际访问文件时存在问题。
  • @Mike:谢谢!...它引用了一个不存在的名称。我更改了名称,现在可以使用了!
【解决方案2】:

您需要知道 .lib 文件的位置,然后您需要将其添加到您的项目配置中。这与添加 DirectX 库引用、BOOST 等非常相似。我发现以下帖子显示了how to add additional libraries

您还需要确保将更改应用到所有构建,以便您可以进行发布、调试等。

【讨论】:

    猜你喜欢
    • 2011-09-21
    • 2014-06-19
    • 2014-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-02
    • 2017-02-17
    • 1970-01-01
    相关资源
    最近更新 更多