【问题标题】:Visual C++ says "LNK1104: cannot open file 'stlport_statix.lib'"Visual C++ 说“LNK1104:无法打开文件 'stlport_statix.lib'”
【发布时间】:2011-04-25 20:35:37
【问题描述】:

尝试在 Visual Studio 2008 中链接我的 C++ 解决方案时,我收到消息“LNK1104:无法打开文件 'stlport_statix.lib'”。

我已经安装了STLport,正确的路径设置在Tools->Options->Projects And Solutions->VC++ Directories->Library Files。然而,STLport 不提供名为 stlport_statix.lib 的文件,仅提供 stlport_static.lib。

Visual Studio 从哪里得到将结尾“c”替换为“x”的想法?

请注意,这很可能是一个非常简单的错误,因为我不熟悉 Microsoft 堆栈(来自 Linux/gcc 背景)。

编辑:我发现了“x”的来源,它的意思是“使用动态 RTL 构建的静态 STLport 库”。构建 STLPort 的人并没有构建那个版本,因为我们不应该使用它。

Edit2:我现在正试图弄清楚为什么 Visual Studio 使用 /MD 构建,即使项目在“代码生成”下设置为使用 /MT。这似乎是问题的根源。

【问题讨论】:

  • 你有一个名为“stlport_statix.lib”的文件吗?
  • 不,我只有 stlport_static.lib。

标签: visual-c++ stlport


【解决方案1】:

问题解决了。我在解决方案中有一个使用/MD 而不是/MT 的项目,这是我忽略的。

详细说明:可以为动态链接或静态链接构建 STLport。它也可以为静态链接而构建,但使用动态链接的运行时库。后者生成一个名为“stlport_statix.lib”的库,而普通静态链接的库称为“stlport_static.lib”。

当您使用 STLport 构建时,_auto_link.h 会根据您使用的是 /MD 还是 /MT 来决定要链接的版本。

有关详细信息,请参阅 _auto_link.h 第 27-39 行和 _detect_dll_or_lib.h 第 32-65 行(假设 STLport 5.2.1)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-24
    • 2011-11-19
    • 2015-11-11
    • 2020-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多