草庐IT

C++条件编译

全部标签

c# - 通过控制台界面访问编译器时包含库

灵感来自this例如,我决定扩展Factorial类。usingSystem;usingSystem.Numerics;namespaceFunctions{publicclassFactorial{publicstaticBigIntegerCalcRecursively(intnumber){if(number>1)return(BigInteger)number*CalcRecursively(number-1);if(number我使用过System.Numerics,默认情况下不包含它。因此,命令csc/target:library/out:Functions.dllFact

windows - 如何在 Visual Studio 中将版本信息添加到已编译的 EXE 文件中?

我有一个C++控制台应用程序,我想在EXE文件中添加一个版本号。如果这个版本会随着每次构建自动递增,那就更好了。这在VisualStudio2013中有可能吗? 最佳答案 第一部分很简单。右键单击解决方案中的ResourceFiles文件夹,添加、资源、版本。只需根据需要编辑字段。该编辑器在Express版afaik中不可用。第二部分,不,自动递增版本并不简单。有用于此的构建自动化工具,您在构建服务器上使用的那种。如果你使用一个,你就不会问这个问题。 关于windows-如何在Visua

c++ - 在 Windows 下为 OpenCV 编译 MinGW 库

我正在尝试在Windows7下为MINGW编译OpenCV3.0静态库。为此,我:downloadedandunpackedOpenCVdownloadedandinstalledMingWdownloadedandinstalledCMake我还将系统“Path”变量的路径添加到OpenCV、MinGW和CMake的“bin”目录中。之后我:运行cmake-gui4.1。配置源代码“opencv/sources”4.2。生成的makefile到目前为止一切似乎都正常,Makefile已经存在于opencv/sources中。现在我想用make编译:c:\OpenCV_3_0\open

c++ - 假设任何 x86 编译的应用程序总是在 x64 版本下运行是否安全?

是否可以安全地假设任何x86编译的应用总是在编译该应用的同一操作系统的x64版本下运行?/p>据我所知,对于Windows操作系统,答案是"is"。Windowsx86仿真层也是出于同样的目的而构建的。但是,我只想再次确认这里的专家。Unix、Linux呢?有什么注意事项吗? 最佳答案 不,要运行x86代码,它需要在兼容或传统模式下运行。如果操作系统不支持在兼容模式下运行进程,程序很可能无法运行。Linux和IFAIKWindows目前支持兼容模式,看起来还有更多或多或少的支持。我的理解是NETBSD需要一个特殊的模块来支持它,因此

windows - "IF"之后的链式命令有条件地使用 &

如果没有创建文件夹,我正在尝试检查是否已创建文件夹IFNOTEXISTdist\\js(MKDIRdist\\js)然后不管它是否创建了我要运行的文件夹&uglifyjsdev/*.js-m-odist/js/app.js现在看来&不起作用。如果文件夹存在,则不执行第二个命令。如果我使用以下内容作为我的第一条陈述:IFNOTEXISTdist\\js(MKDIRdist\\js)ELSE(Echoexist)我第一次将两者一起运行,如下所示:IFNOTEXISTdist\\js(MKDIRdist\\js)ELSE(Echohate)&echoLove&uglifyjsdev/*.js

c++ - std::tuple get<T>(tuple) 中的重复类型 T - 编译时断言失败

我将可变参数存储到std::tuple中的对象构造函数到目前为止一切顺利。但是当使用存储的参数和std::get()调用对象函数时,我将被抛出一个我根本不理解的编译时断言失败。只有当所有参数都不是不同类型时才会发生这种情况。编译器错误信息是:msvc\14.16.27023\include\tuple(934):errorC2338:duplicatetypeTinget(tuple)如下所示:#include#includeusingnamespacestd;templatestructstore_in_tuple{tuplem_tuple_args;store_in_tuple(A

windows - 多个进程共享一个 DLL 的必要条件

我在理解我从Microsoft读到的以下声明时遇到了问题。它说“在相同基地址加载相同DLL的多个进程在物理内存中共享DLL的单个副本。”所以我的理解是,如果一个DLL必须在不同进程之间共享,那么该DLL必须加载到每个进程虚拟内存中的相同基地址。为什么会这样?如果进程加载到不同进程虚拟地址空间中的不同基地址会发生什么情况,因为最终所有进程都将访问相同的物理内存以共享DLL。 最佳答案 图像部分绑定(bind)到磁盘上的文件。虽然我们不修改部分集中的某些页面-此页面将共享并由图像文件支持。但如果我们修改页面-它不能更多地由图像文件支持。

c++ - 你如何为 x64 编译静态 pthread-win32 库?

看起来已经做了一些工作来制作pthread-win32使用x64,但没有构建说明。我曾尝试使用VisualStudiox64交叉工具命令提示进行简单构建,但是当我尝试从x64应用程序链接到lib时,它看不到任何函数导出。它似乎仍在将lib编译为x86或其他东西。我什至尝试过将/MACHINE添加到makefile的适当位置,但没有帮助。有人让这个工作吗? 最佳答案 您可以使用vcpkghere.这是C++的Windows包管理器。它支持pthread构建以及其他开源库。我想使用静态pthread库。当我下载pthread时,我得到了

c++ - Windows 8.1 上的 clang-cl 编译错误

我刚开始在Windows上使用clang-cl3.7。我试图通过VisualStudio2015和命令行在我的WIN8.1机器上编译我的代码。不用说,在此之前,在同一个cmd中,我使用amd64选项运行了vsvarsall。这是我的代码:#defineUNICODE#include#includeintmain(){inta=0;if(0)__asm_emit0xE8elsea=3;if(IsDebuggerPresent())MessageBox(NULL,(LPCWSTR)L"Debuggerdetected!!",(LPCWSTR)L"!!!!!",MB_ICONWARNING|

c - Windows 和 *nix 编译检测

应该为Windows、Linux和嵌入式目标编译一个项目。该应用程序在主机或嵌入式目标上运行时具有行为差异。为了总结我的要求,这是表格:TargetCompilerBehaviorWindowsMSVC,gccAHostLinuxgccAEmbeddedLinuxcrosspltfgccB我希望创建一个可以自动识别编译器和环境差异的Makefile(无需手动传递参数/定义)。是否可以仅在C源文件级别使用条件编译来解决此类问题?到目前为止,我还没有使用automake。 最佳答案 autotools是为了解决这个问题。Makefile