问题标签 [cl]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
5293 浏览

c++ - 如何找出 cl.exe 的内置宏

有谁知道我怎样才能找出哪些是 cl.exe 的内置/预定义宏?例如,对于 gcc,以下命令行将列出所有编译器的内置宏

编辑:我对类似于 gcc 的“询问实际编译器”的方式感兴趣。

谢谢

0 投票
1 回答
1804 浏览

c++ - Windows 7 64 位 Visual Studio 2013 上的本机 cl.exe

我需要什么版本的 Visual Studio 2013 才能拥有本机 64 位cl.exeamd64一个,不是x86_amd64)?我正在使用 Visual Studio 2013 Express(Windows 桌面开发)运行 Windows 7 64 位

0 投票
0 回答
153 浏览

c++ - 从程序内启动 cl.exe 仅在某些情况下有效

所以我有一个 Qt 程序(“Main”),它(在其 Windows 版本中)在内部启动 cl(VS 编译器)。我可以通过以下三种方式之一启动 Main,其中两种方式,对 cl 的内部调用成功,第三种,可能是最重要的一种,它失败并出现“cl is unrecognized program ...”错误。cl 被调用system,在调用它之前,我遵循这个答案并运行vcvars32.bat,也被调用system

  1. Main 从 QtCreator 中启动。cl 在这种情况下成功启动。
  2. Main 从 Windows 命令行启动。cl 在这种情况下成功启动。
  3. Main 通过在 Explorer 中单击它来启动。 在这种情况下 cl 无法启动,再次在控制台中短暂闪烁“无法识别的程序”错误。

我猜有些环境要么继承自 QtCreator (1),要么在 Windows 命令行启动 (2) 时设置,但不是在您单击图标时设置。不过只是猜测。有人知道在(3)的情况下我可以做些什么来使事情正常进行吗?并且使用另一个编译器会增加不同的复杂性,所以我只想让它工作cl(以阻止对此的明显回复)。另外,我尝试使用 a 进行操作,QProcess但在 1-3 中我都遇到了同样的问题。

编辑:这是对 vcvars32.bat 的调用

这在所有 1-3 中返回 0(成功)。对 cl 的调用是例如

这为 1-2 返回 0,在条件 3 中返回 1,即 ERROR_INVALID_FUNCTION。

0 投票
1 回答
153 浏览

eclipse - 与 cl.exe 链接时隐藏(缺少)库依赖项

我刚刚接触了一个基于 CMake/Eclipse 的大型 C++ 项目。构建目标之一是基于 Windows/nmake。在构建可执行文件的最后一步,链接器抛出 LNK1104: cannot open file 'python27.lib'。这是正确的,因为尚未安装 Python 2.7。

问题是,我在 cl.exe 的命令行中找不到对该库的任何引用。整个项目目录(包括 eclipses .metadata 目录)上的 grep 也找不到任何合理的东西。删除所有 cmake 生成的构建内容也无济于事。

真正的问题是,如果基于 MSVC 的库(导入或静态库)有任何机制在链接步骤中隐式地请求其他库。提到的项目中有一些预编译的。我只需要词汇表,从哪里开始对错误原因进行更合格的搜索。

0 投票
1 回答
257 浏览

c++ - 使用 NMAKE 编译 VC++ DLL

我有一个使用 Visual Studio 2005 编译的 DLL 文件,当我从 C# 程序调用这些函数(在 DLL 中)时,它运行良好。但是,如果我使用 NMAKE 编译相同的程序,它会成功编译,但它不适用于 C# 程序。我收到“ DLL NOT FOUND EXCEPTION ”或“ DLL IS CORRUPT ”。

PS:我从原始项目文件中复制了所有编译器选项和链接器选项,并在MakeFile中使用它,但仍然没有用。我在这里错过了什么?

编译器和链接器选项如下:

编辑:如果我使用dumpbin,使用 NMAKE 编译的 DLL 中的 "HEADERS","EXPORTS","SYMBOLS" 的大小都比使用 Visual Studio 编译的 DLL 小!

0 投票
1 回答
783 浏览

c - 使用 /c 和 /MD 选项编译 C 文件,然后链接 .lib 文件

我有一个使用 3-4 个外部库的 C 文件。它是使用cl.exeand link.exe(MSVC) 构建的。

构建脚本显示生成exe的过程分为两个阶段-

  • 使用 '/c' 选项cl.exe来获取.o文件。还给出了一堆其他标志,但我关心的是/MD. MSDN 说:

使应用程序使用运行时库的特定于多线程和特定于 DLL 的版本。定义 _MT 和 _DLL 并使编译器将库名称 MSVCRT.lib 放入 .obj 文件中。

当我们只编译而不链接时,给予/MDwith 有什么用?cl

  • 在此之后,link.exe用于生成 exe。为链接指定了几个.lib文件(如 ole32.lib、advapi32.lib、user32.lib 等以及其他非 MSVC 特定的文件)。我的问题是不是.lib用于静态链接的文件吗?如果是,那么为什么最终的 exe 只有大约 500 KB?没有一个.lib是导入库。

    如果不是,那么link默认情况下使用静态链接还是动态链接?/MD给定的 withcl在这里有什么影响吗?

0 投票
1 回答
151 浏览

c++ - 显然不正确的 C++ 代码被 cl.exe 编译器接受

我想知道为什么 Visual Studio 2012 的 Microsoft cl.exe 编译器接受以下 C++ 代码?

这看起来像是一个明显的错误,但上面的代码是可编译的。但是请注意,以下代码被正确拒绝:

0 投票
1 回答
711 浏览

c++ - 未使用的变量和函数的链接器错误

我写了以下测试程序

正如你所看到的,这个程序没有做任何事情。然而,在编译它时,我遇到了链接器错误,globalvar尽管int proc1()事实上这些不会被入口点函数引用maincl我在 Windows(使用)和 Linux(使用)上都遇到了问题gcc

有没有办法指示编译器/链接器不要从入口点(在 cl、gcc 和 clang 上)链接这个未引用的全局变量和函数?

Windows 上的确切错误消息:

0 投票
1 回答
34 浏览

visual-studio-2012 - 如何要求 Visual Studio 按特定数量的内核进行编译

我们知道,在 gnu-make 中,我们可以简单地通过 -j2、-j4 之类的方式来表示。

如何让 Visual Studio 做类似的事情。

例如,我的桌面有 8 个内核,我需要 4 个内核来编译 C++ 中的代码,另外 4 个内核供我做其他事情。

0 投票
1 回答
652 浏览

command - as400 crtcmd 命令未在库中创建

我正在制作自己的命令,到目前为止,处理 .cmd 代码的 cl 代码本身就可以正常工作。我可以调用它并发送参数,它完全可以完成它需要做的事情,所以我假设错误必须与.cmd有关:

当我运行crtcmd并提供适当的文件名时,我收到消息“未在库 [库名称] 中创建命令 DSPSYSLVL”。带有 CPF0201 消息。

我对整个系统还很陌生,我真的不确定问题可能是什么。作业日志也没有提供任何新信息......