【问题标题】:what is MSVC -L equivalent?什么是 MSVC -L 等价物?
【发布时间】:2012-04-10 09:15:37
【问题描述】:

我正在尝试使用 UNIX 生成文件编译一个库,但使用的是 Visual Studio 2010。我修改了生成文件以便它应该可以工作,但链接器有问题。 我的编译器选项很简单:

CSWITCHES = -O2 -I$(INC_DIR) -L$(LIB_DIR)

(INC_DIR 和 LIB_DIR 指向 VC 的 include 和 lib 目录)。

我没有包含问题,所以我认为 -I 没问题,但编译器会忽略 -L 选项:

ignoring unknown option -Lblahblah

我检查了 msdn 站点 http://msdn.microsoft.com/en-us/library/y0zzbyt4(v=vs.80).aspx 链接器选项,我尝试使用 LIBPATH 选项,但我也不起作用。

所以这是我的问题:指定链接器的库目录路径的 msvc 命令行选项是什么?

【问题讨论】:

  • 你之前运行过 vcvars32.bat 吗?见msdn.microsoft.com/en-us/library/f2ccy3wt%28v=vs.100%29.aspx
  • 它没有改变任何东西。我认为我在这里没有路径问题。这是编译器完全忽略的 -L 选项。
  • 好的,我说得更清楚了:运行 vcavars32.bat 并正确设置包含/库路径,因此您不需要设置它们。 -L 选项没有与 msvc 等效的选项。
  • CharlesB,我在提问之前设置了包含和库路径。由于没有 -L 等效项,因此我还是将其从我的 makefile 中删除了。我仍然有一个问题,但我想我的问题是什么不好。我有一个链接器错误,“无法打开文件 libcmt.lib”。我以为我有这个错误是因为 -L 选项被忽略了。
  • 抱歉坚持,但你有运行 vcvars32.bat

标签: visual-studio-2010 command-line


【解决方案1】:

Duplicated.

您应该在“/link”之后提供 /LIBPATH 作为链接器选项。确保系统路径中有 cl.exe。这是我要编译的bat文件:

call "D:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x86

cl %CompilerFlags% ..\src\main.cpp /I %IncludePaths% /link %LinkerFlags% /LIBPATH:%LibraryPaths%  

【讨论】:

    【解决方案2】:

    MSVC 没有等效的 -L 选项,路径直接提供给 LINK。至于标准库搜索路径,由vcvar32.bat正确设置(见this MSDN article)

    【讨论】:

      猜你喜欢
      • 2010-09-14
      • 2014-05-08
      • 2014-06-12
      • 1970-01-01
      • 2022-11-28
      • 2021-06-19
      • 2018-07-10
      • 2023-04-10
      • 2021-11-29
      相关资源
      最近更新 更多