问题标签 [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.
c++ - 如何找出 cl.exe 的内置宏
有谁知道我怎样才能找出哪些是 cl.exe 的内置/预定义宏?例如,对于 gcc,以下命令行将列出所有编译器的内置宏
编辑:我对类似于 gcc 的“询问实际编译器”的方式感兴趣。
谢谢
c++ - Windows 7 64 位 Visual Studio 2013 上的本机 cl.exe
我需要什么版本的 Visual Studio 2013 才能拥有本机 64 位cl.exe
(amd64
一个,不是x86_amd64
)?我正在使用 Visual Studio 2013 Express(Windows 桌面开发)运行 Windows 7 64 位
c++ - 从程序内启动 cl.exe 仅在某些情况下有效
所以我有一个 Qt 程序(“Main”),它(在其 Windows 版本中)在内部启动 cl(VS 编译器)。我可以通过以下三种方式之一启动 Main,其中两种方式,对 cl 的内部调用成功,第三种,可能是最重要的一种,它失败并出现“cl is unrecognized program ...”错误。cl 被调用system
,在调用它之前,我遵循这个答案并运行vcvars32.bat
,也被调用system
。
- Main 从 QtCreator 中启动。cl 在这种情况下成功启动。
- Main 从 Windows 命令行启动。cl 在这种情况下成功启动。
- 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。
eclipse - 与 cl.exe 链接时隐藏(缺少)库依赖项
我刚刚接触了一个基于 CMake/Eclipse 的大型 C++ 项目。构建目标之一是基于 Windows/nmake。在构建可执行文件的最后一步,链接器抛出 LNK1104: cannot open file 'python27.lib'。这是正确的,因为尚未安装 Python 2.7。
问题是,我在 cl.exe 的命令行中找不到对该库的任何引用。整个项目目录(包括 eclipses .metadata 目录)上的 grep 也找不到任何合理的东西。删除所有 cmake 生成的构建内容也无济于事。
真正的问题是,如果基于 MSVC 的库(导入或静态库)有任何机制在链接步骤中隐式地请求其他库。提到的项目中有一些预编译的。我只需要词汇表,从哪里开始对错误原因进行更合格的搜索。
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 小!
c - 使用 /c 和 /MD 选项编译 C 文件,然后链接 .lib 文件
我有一个使用 3-4 个外部库的 C 文件。它是使用cl.exe
and link.exe
(MSVC) 构建的。
构建脚本显示生成exe的过程分为两个阶段-
- 使用 '/c' 选项
cl.exe
来获取.o
文件。还给出了一堆其他标志,但我关心的是/MD
. MSDN 说:
使应用程序使用运行时库的特定于多线程和特定于 DLL 的版本。定义 _MT 和 _DLL 并使编译器将库名称 MSVCRT.lib 放入 .obj 文件中。
当我们只编译而不链接时,给予/MD
with 有什么用?cl
在此之后,
link.exe
用于生成 exe。为链接指定了几个.lib
文件(如 ole32.lib、advapi32.lib、user32.lib 等以及其他非 MSVC 特定的文件)。我的问题是不是.lib
用于静态链接的文件吗?如果是,那么为什么最终的 exe 只有大约 500 KB?没有一个.lib
是导入库。如果不是,那么
link
默认情况下使用静态链接还是动态链接?/MD
给定的 withcl
在这里有什么影响吗?
c++ - 显然不正确的 C++ 代码被 cl.exe 编译器接受
我想知道为什么 Visual Studio 2012 的 Microsoft cl.exe 编译器接受以下 C++ 代码?
这看起来像是一个明显的错误,但上面的代码是可编译的。但是请注意,以下代码被正确拒绝:
c++ - 未使用的变量和函数的链接器错误
我写了以下测试程序
正如你所看到的,这个程序没有做任何事情。然而,在编译它时,我遇到了链接器错误,globalvar
尽管int proc1()
事实上这些不会被入口点函数引用main
。cl
我在 Windows(使用)和 Linux(使用)上都遇到了问题gcc
。
有没有办法指示编译器/链接器不要从入口点(在 cl、gcc 和 clang 上)链接这个未引用的全局变量和函数?
Windows 上的确切错误消息:
visual-studio-2012 - 如何要求 Visual Studio 按特定数量的内核进行编译
我们知道,在 gnu-make 中,我们可以简单地通过 -j2、-j4 之类的方式来表示。
如何让 Visual Studio 做类似的事情。
例如,我的桌面有 8 个内核,我需要 4 个内核来编译 C++ 中的代码,另外 4 个内核供我做其他事情。
command - as400 crtcmd 命令未在库中创建
我正在制作自己的命令,到目前为止,处理 .cmd 代码的 cl 代码本身就可以正常工作。我可以调用它并发送参数,它完全可以完成它需要做的事情,所以我假设错误必须与.cmd有关:
当我运行crtcmd
并提供适当的文件名时,我收到消息“未在库 [库名称] 中创建命令 DSPSYSLVL”。带有 CPF0201 消息。
我对整个系统还很陌生,我真的不确定问题可能是什么。作业日志也没有提供任何新信息......