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

Posted

技术标签:

【中文标题】为啥在 Visual Studio 中编译 C++ 项目时出现致命错误“LNK1104:无法打开文件 \'cryptlib.lib\'?【英文标题】:Why fatal error “LNK1104: cannot open file 'cryptlib.lib' occur when I compile a C++ project in Visual Studio?为什么在 Visual Studio 中编译 C++ 项目时出现致命错误“LNK1104:无法打开文件 'cryptlib.lib'? 【发布时间】:2017-03-30 18:57:08 【问题描述】:

在 Visual Studio 上编译项目时出现上述错误。我的情况奇怪和不同的是,这适用于我的个人笔记本电脑,但不适用于工作。

我将整个项目保存在 Dropbox 中,因为我有时会在下班后处理我的项目,我喜欢这种自动同步,这样我就不用担心丢失任何东西。话虽如此,我对我的库使用相对路径,这样两台计算机的文件夹都是相同的,即“..\cryptopp\x64\Output\Debug\cryptlib.lib”

我的问题是,为什么它在家里有效,但在工作中无效?我确保属性表也有正确的路径。链接器和 VC++ 目录都是相对路径。

这个 cryptlib.lib 有一些命名空间,如 CryptoPP 和变量类型,如字节,它不会给我一个错误。它知道它存在(我得到正确的字体颜色)

我有什么遗漏的吗?

附:为每个请求添加了屏幕截图。不能添加超过2个链接,所以我将2个屏幕截图合并为1个。那个ECE427Projects是解决方案文件所在的位置。我不想再往前走了。

Screenshot 1

Screenshot 2

【问题讨论】:

你能给我们截图吗 A) 目录,包括完整路径,库所在的位置,B) Visual Studio 中定义的路径变量,包括指向库所在的路径是。 【参考方案1】:

您将库的目录放在错误的字段中。

您可以使用两个位置来指定您的库所在的目录。我更喜欢使用配置属性VC++目录中的库目录部分,但替代方法是附加库目录配置属性链接器常规。无需在两个位置都指定它,但我怀疑如果你这样做会发生任何不好的事情。请记住,这应该是一个目录,而不是文件,因此请从该目录字符串中删除结尾的 cryptlib.lib 文件名。

如果您还没有,在 配置属性链接器输入中,对于 其他依赖项,您应该在您的情况下放置库对象的名称 (cryptlib.lib)。

对于所有这些,请确保项目属性页继承的默认值在您添加的内容之后仍然存在。

如果这不能解决问题,请告诉我。

【讨论】:

看起来将库目录放在 VCC++ 库目录上就像一个魅力。我将从链接器路径中删除库以删除冗余。我确实有一个有点相关的问题。我将放在 VCC+ 目录中的路径,是否以反斜杠结尾有关系吗? @Maty 从我的测试来看,这似乎并不重要。 啊,我也是这样。我只是想从技术上知道有什么区别,可能在将来的某个时候很重要。不管怎样,非常感谢您的帮助。

以上是关于为啥在 Visual Studio 中编译 C++ 项目时出现致命错误“LNK1104:无法打开文件 'cryptlib.lib'?的主要内容,如果未能解决你的问题,请参考以下文章

Visual Studio 2010在编译c++时为啥有错误也没有下划波浪线?

Visual Studio C++为啥不编译0b00000001 [重复]

为啥我不能在 Visual Studio 中禁用预编译头文件?

为啥 g++ 和 MS Visual Studio C++ 执行以下代码的方式不同?

为啥我们在 Visual Studio 2013 中引用 C++ 项目?

Visual Studio 2010 像 Visual Studio 6 一样在 C++ 中编译内联程序集?