草庐IT

提前编译

全部标签

c++ - 从已编译的应用程序创建 Windows 服务

我想使用MicrosoftVisualStudio2015从我编译的C/C++代码创建一个服务。我编译了我的代码并使用来自应用程序可执行文件的sc.exe创建了一个服务。我的代码由一个无限循环组成,它在时间间隔内将一个简单的字符串写入一个静态文件。创建服务并重启后,服务似乎自动停止了。直接运行时可执行文件工作正常。代码如下:#include"stdafx.h"#include#include#includeusingnamespacestd;voidwrite_txt_file(stringfile_name,stringinput){/*writeastringtoaspecific

c++ - 使用 MSVC 9 编译的程序无法在 vanilla SP3 XP 上启动

我在虚拟机上安装了XP,将其更新为SP3,然后在我的真实计算机上测试了一个用VisualC++2008编译的小程序-但是它没有启动,只是输出一个错误,说检测到问题并且重新安装应用程序(我的应用程序大小为10KB,甚至没有安装)可以解决问题。运行使用MSVC9编译的程序需要什么?我可以只包含一些dll以便它在任何地方都能工作吗? 最佳答案 静态链接到运行时库(选择multithreaded而不是multithreaded-dll)或遵循tommieb75的建议并安装MSVC9runtimeredistributable(复制到syst

c++ - 在不同项目(没有编译时链接)中使用的 header 中声明的纯抽象 C++ 类是否共享相同的虚拟表模型?

我有一个C++头文件声明了一个仅由纯虚方法组成的类。我有两个使用该header的DLL(其中一个实现该接口(interface))但在编译时未链接。一个DLL正在动态加载另一个,将已实现接口(interface)的指针传递给另一个。这些DLL是否共享相同的虚拟表结构? 最佳答案 当然,类头足以构建完整的类(这里说的是内存中的布局,一切都是如何定位的,而不是里面的实际数据),包括精确的虚拟表结构。想一想,每个链接对象(您的.cpp文件)都是单独编译的,只有头文件是共同的,但在编译时,编译器必须知道虚拟表的精确结构才能正确路由虚拟调用。

windows - cuda nvcc 交叉编译器

我想在Mac上编译CUDA代码,但使其在Windows上可执行。有没有办法设置nvccCUDA交叉编译器?问题是由于旅行,我的桌面窗口将有一段时间无法访问,但是我不想浪费时间等待我回来编译代码。如果我必须等待,那么调试代码并确保它编译正确等等都是浪费时间。不过,我的Mac没有配备支持cuda的硬件。 最佳答案 简短的回答是,不,这是不可能的。这是一个常见的误解,但nvcc实际上并不是一个编译器。它是一个编译器驱动程序,并且在很大程度上依赖于主机C++编译器来引导主机和设备代码的编译。要为Windows编译CUDA,您必须使用Micr

c++ - 从 Linux 到 Windows 交叉编译时应该如何处理字符编码?

在使用mingw从Linux交叉编译到Windows时,应该如何处理字符编码/转换问题?我正尝试在Linux系统上为Windows目标交叉编译Qt项目。我已经安装(我认为是)所有必需的mingw包,我认为我的环境配置正确。但是,当我尝试配置Qt库时,它在尝试编译project.cpp时失败了:project.cpp:Inmemberfunction'QStringList&QMakeProject::values(constQString&,QMap&)':project.cpp:3062:51:error:cannotconvert'wchar_t*'to'LPSTR{akachar

c++ - 哪些适用于 Windows 的 C++11 编译器支持新的类型特征,例如 "is_nothrow_move_constructible"?

是否有支持新的C++11类型特征的适用于Windows的C++11编译器,例如is_nothrow_move_constructible?我试图编写一个支持它的容器,却发现我的编译器(VC++2010、TDMMinGW32GCC4.6)都不支持它... 最佳答案 对于mingw,我推荐STL'sdistrohere(海湾合作委员会4.7.1)。它还带有boost1.50。还有mingw-w64(原始mingw的一个分支),我推荐rubenvb'spersonalbuildshere.转到ToolchainstargettingWin

windows - Qt 4.8.3 Windows 7 使用 Visual Studio Express 2012 编译

我还是Qt的新手。过去,我常常在计算机上下载Qt并毫无问题地安装它,我可以立即访问所有QtSDK资源,包括QtCreator。现在,我下载了QtSDK4.8.3,经过一些阅读后我最终安装了WindowsSDK7。然后我将Qt文件解压缩到C:\Qt。我还添加了C:\Qt\4.8.3\到系统路径。然后我运行configure,结果没有错误。然后我尝试运行nmake但失败并出现以下错误:GeneratingCode...link/LIBPATH:"c:\Qt\4.8.3\lib"/LIBPATH:"c:\Qt\4.8.3\lib"/NOLOGO/DYNAMICBASE/NXCOMPAT/BA

windows - 在 Windows 7 上使用 MinGW 编译 boost 之前如何构建 Boost.Build?

我正在运行Windows7EnterpriseSP1并尝试设置C++开发环境。我安装了MinGW,似乎可以自行正常工作。接下来,我需要安装boost……看来唯一好的选择是从源代码编译。(我没有看到任何官方Windows二进制文件。我发现了几个非官方的二进制文件,但它们往往比当前版本落后几个版本,而且不清楚它们是否得到维护。)所以我下载了tarball,解压它,从MinGW打开MSYSshell,转到tools/build/v2并运行bootstrap.sh-这失败了,bootstrap.log如下所示:######Using'gcc'toolset.###rm-rfbootstrapm

java - 是否需要在每个操作系统上安装JVM才能运行java软件或java编译文件。?

Java是平台无关的,因为它的代码首先编译,然后JVM转换成操作系统可以理解的代码。所以我有疑问,我是否需要在每个操作系统上安装JVM? 最佳答案 操作系统无法理解没有任何翻译层的代码。JVM理解代码。您需要安装Java运行时(JRE),它可以在您希望运行Java代码的任何机器上运行JVM。这是因为java不是像C或C++这样的“native”代码,而是需要一些东西将指令转换为JVM所做的机器代码。 关于java-是否需要在每个操作系统上安装JVM才能运行java软件或java编译文件。

c++ - 涉及 `std::string` 的编译导致 Windows 错误状态

最小的例子:#include#includeintmain(int/*argc*/,char*/*argv*/[]){HANDLEhandle=GetStdHandle(STD_OUTPUT_HANDLE);//Behaviorthesame,withorwithout.DWORDerr=GetLastError();std::stringstr;return(int)err;//returns127ifflineaboveuncommented,0iffcommented}此程序返回127,对应于ERROR_PROC_NOT_FOUND(“找不到指定的过程。”)。请注意,err是在s