我在VC ++ 2008中有关于编程的以下问题
我正在学习VC ++,只是想清除疑惑。 希望他们很快就会被清除!
先谢谢你 干杯
答案 0 :(得分:3)
1>取决于:如果不使用任何Windows 7特定的API,您将在Windows Vista上运行该程序没有问题;如果你不使用任何Vista特定的API,你将在XP等上运行它没有问题。
2 - ;当然,您只需要创建一个本机项而不是C ++ / CLI一个
3>您将需要一个像“wine”这样的模拟器来运行linux下的Windows可执行文件
答案 1 :(得分:3)
在大多数情况下......但请记住:
如果您想在没有.NET框架的情况下进行编程,请在创建新项目时选择任何“Visual C ++”项目 - 但不要使用任何CLR项目。
原生C ++应用程序(控制台或窗口)将在较旧的Windows操作系统上运行,只要您不链接函数调用或仅在较新的操作系统中可用的API。例如,不要调用StgMakeUniqueName并期望您的应用在Windows XP上运行。但是,在Win7上运行的最新版本的Visual C ++上编译控制台C / C ++应用程序来生成在XP上运行的EXE是相当容易的。
我相信您可以通过使用_WINNT_WIN32定义来防止意外使用新API。
Windows上对本机C ++应用程序的另一个考虑是默认情况下,Visual C ++将选择动态链接来包含C-RunTime(例如msvcrt100.dll)。在将EXE复制到的计算机上,这些DLL并不总是可用。当您在另一台计算机上运行EXE时,您可能会收到有关无法找到MSVCRT * .dll的应用程序错误。如果发生这种情况,您可以在项目设置中切换到静态链接(然后只是将EXE直接复制到其他计算机),或者在要运行EXE的其他计算机上预安装相应的MSVCRT。 Visual Studio预先安装MSVCRT作为其自身设置的一部分。 Visual Studio附带MSI文件,用于安装可以重新分发的MSVCRT。 EXE的调试版本可能需要手动将MSVCRT DLL的调试版本复制到目标计算机。为调试版本选择静态链接,或者只使用零售MSVCRT进行应用程序链接的调试版本。
如果您选择将该框架用于UI开发,则MFC及其相关的DLL也适用相同的考虑因素。 (但你说控制台应用程序,所以你不必担心这个。)
如果没有一些黑客行为,您的EXE将无法在Linux上运行。 (重新编译更容易)。但是如果你用.NET编写你的控制台应用程序,那么EXE很有可能在使用Mono的Linux上运行。
答案 2 :(得分:2)
答案 3 :(得分:1)
关于您的问题2:在构建C ++应用程序时,您仍然必须确保目标系统具有应用程序的所有运行时库。 Visual Studios(甚至是VS服务包)都带有不同版本的运行时库。它们安装在并行缓存WinSxS中。
部署应用程序时,应为构建应用程序时使用的运行时库添加VCRedist.exe。
答案 4 :(得分:0)
3:如果您编写可移植的C ++控制台应用程序(不使用Windows特定的功能),您可以使用针对该平台的某些编译器重新编译其他平台。