问题标签 [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 投票
2 回答
97 浏览

c++ - cpp 文件不使用 cl 编译,但在 Visual Studio 中编译得很好

我遇到以下代码无法使用 CL (VS CMD) 编译的问题。它没有编译,而是给了我错误 LN2019。在 VS 中编译相同的代码,编译没有错误。

我将问题追踪到第 36 行:

当我注释掉这一行时,文件编译得很好。用于编译的 cl 命令也很标准:

我错过了一些 cl 参数吗?

0 投票
1 回答
2393 浏览

c++ - 如何强制 cmake 在没有完整路径的情况下使用 cl.exe?

我正在构建一个使用 CMake 的开源项目(kst,v2.0.8)。我正在使用 CMake v2.8.12.2 和 MSVC 2008 作为编译器,并且正在生成 NMake makefile 以在命令行上构建它。我可以通过此设置成功构建它。这些版本是强制性的,因此我目前无法使用更高版本的 CMake 或 MSVC。

我需要能够使用 HP 的 Fortify 执行 kst 的源代码分析,并能够从命令行使用它,它以两种方式之一工作:

  1. 它创建自己的“cl.exe”的非接触模式,在真正的 cl.exe 路径之前设置它的路径,因此在构建期间启动。

  2. 将 makefile 中的编译器设置为 Fortify 命令行,例如,sourceanalyzer -b build_id cl而不是cl.

无论哪种方式,我都需要强制 cmake 在其 makefile 中生成的编译器成为 cmake 不会自动检测到的东西。

我已经尝试在按照这个问题中的相同方法运行 cmake 时设置编译器,但 cmake 仍然坚持将 MSVC cl.exe 的完整路径放在 makefile 中。

我还尝试将编译器设置为调用 Fortify,但是当 cmake 测试编译器时它失败了,说它找不到编译器。(我也试过这个没有 FORCED=ON 参数,在这种情况下它说编译器失败了。)

我可能可以搜索和替换 makefile 中的所有编译器调用,但我必须记住在每次 cmake 之后都这样做,而且看到有多个项目/makefile/对 cl 的调用(而不是定义 CC)会很乏味makefile 中的变量)。我宁愿有办法让 cmake 从偏移量中使用所需的编译器。

0 投票
1 回答
668 浏览

c++ - 使用 /RTC1 编译时,有时会抑制警告 C4701

这段代码(注意注释行):

给出以下警告(如预期的那样):

但是,当我取消注释中的分配main(),不再给出警告。我正在使用/RTC1命令行选项进行编译以启用运行时错误检查

我已经尝试了 Visual C++ 2013 和 2015 中最新的 64 位版本的编译器。两者都产生了相同的行为。

问题是:这是编译器错误,还是对此有解释?微软的文档提到 /RTC1 可能会在给出 C4701 的地方给出运行时错误,但它没有说明警告被抑制。

编辑:令人费解的部分是警告仅在buffer[0] = 0;未发表评论时才会消失。

0 投票
1 回答
146 浏览

c++ - C++ 从 Visual Studio 编译源文件

我需要从 Visual Studio 编译一个外部源文件。我从开发人员命令提示符中选择了它:

所以我尝试了这个:

但是 system() 调用的普通 cmd 中不存在命令“cl”

有什么建议如何使用编译器功能吗?

0 投票
0 回答
332 浏览

c++ - cl.exe 预处理器定义未设置值

总之,我正在尝试使用 cl.exe 从命令行编译一些 c++ 代码。在你问之前,这个想法是从另一个程序中实际调用这个 cl.exe 命令,该程序动态定义要传递给 cl.exe 的预处理器定义。另外,我正在开发一个可再发行的 cl.exe,这就是为什么有所有的 include 和 lib 路径。

这是 cl.exe 命令:

cl.exe /Zi /nologo /W3 /WX- /O2 /Oi /Oy- /GL /D:SERVER=\"{address}\" /D:PORT=\"{port}\" /D:PROTOCOL=\"{protocol}\" /D _UNICODE /D UNICODE /Gm- /EHsc /MT /GS- /Gy /fp:precise /Zc:wchar_t /Zc:forScope /Zc:inline /Fo:.\\Clients\\ /Fd:.\\Clients\\vc140.pdb /Gd /TP /analyze- /errorReport:prompt /I.\\src /I.\\Compiler\\include /I.\\Compiler\\include\\ucrt /I.\\Compiler\\include\\um /I.\\Compiler\\include\\shared .\\src\\*.cpp /link /ERRORREPORT:PROMPT /OUT:\".\\Clients\\{name}.exe\" /NOLOGO /LIBPATH:.\\Compiler\\lib /MANIFEST /manifest:embed /PDB:\".\\Clients\\{name}.pdb\" /OPT:REF /OPT:ICF /LTCG:incremental /TLBID:1 /DYNAMICBASE /NXCOMPAT /IMPLIB:\".\\Clients\\{name}.lib\" /MACHINE:X86 /SAFESEH /NODEFAULTLIB:msvcrt

重要的部分就在开头:

cl.exe ... /D:SERVER=\"{address}\" /D:PORT=\"{port}\" /D:PROTOCOL=\"{protocol}\"

这些是我试图传递到我的程序中的定义,括号内的值将在我的其他程序中定义。在命令行中输入“192.168.1.2”、“4444”和“TCP”之类的任意值来测试它提供的结果与我的程序相同,因此这不是问题。

这是我的 C++ 代码片段,它试图根据这些定义定义变量:

当我执行 cl.exe 命令时,它可以正确编译,但我得到“错误:VALUES EMPTY!” 每次。我无法弄清楚为什么定义没有通过。

0 投票
1 回答
116 浏览

opencl - 使用 opencl 添加数组时输出错误

我正在尝试用 pyopencl 对 2 个数组求和,但我在输出中得到奇怪的数字。

代码:

a = [1 代表范围 (10) 中的虚拟对象] b = [i 代表范围 (10) 中的 i]

打印 sum_arrays_with_cl(a,b)

输出:

我做错了什么?

0 投票
2 回答
2618 浏览

c - 如何使用 cl.exe 创建 obj 文件

我有一个标头 (.h) 和 ac (.c) 文件。如何在 cl.exe 中使用它们创建对象 .obj 文件?

0 投票
3 回答
291 浏览

c - 函数调用中数组分配的差异(gcc和cl.exe)

当我使用 GCC 编译器时,我可以使用函数输入参数在函数中动态分配数组大小,但是当我使用 Windows cl.exe 编译器编译它时同样失败。为什么。?

0 投票
2 回答
1879 浏览

c++ - 如何通过命令行设置 VC++ 动态链接?

虽然我通过 Visual Studio 设置运行时 DLL 加载没有问题,但在通过 Visual Studio CLI 工具手动执行时遇到了一些麻烦。

假设我们要编译以下 2 个简单的 C++ 源文件,一个用于二进制可执行文件,一个用于 DLL:

主文件

say_hello.cpp

将文件编译say_hello.cpp为 DLL 然后将其与调用动态链接的步骤是什么main.cpp

根据我对 MSDN 文档的阅读,我能够成功编译say_hello.dll和应用程序,然后运行它并使用以下命令:

不幸的是,这似乎只允许通过say_hello.lib文件静态链接应用程序(可以通过删除 .lib 和 .dll 文件来确认,这仍然可以让二进制文件成功运行)。

我必须将哪些命令/参数传递给编译/链接阶段才能main.exe使用 DLL 而不是静态库?

0 投票
1 回答
124 浏览

c++ - 如何在 Windows 64 位机器上将 c++ 应用程序编译成 x64 模式?

我已经安装了 Windows SDK 7.1 平台工具,并打开了一个名为Microsoft Windows 7 x64 Debug Build Environment. 现在我想使用该命令编译一个C++应用程序(名为main.cpp) 。cl.exe编译命令为:

然后,它输出main.objmain.exe归档。但是当我尝试运行时,它在我认为我应该将应用程序编译成程序之前和之前main.exe崩溃了。请问有人可以给点建议吗?begin computing distend computing dist.x64

main.cpp如下: