基本上标题已经说得很清楚了:我想在编写C++代码时完全禁用CRT。
我希望能够在Win98上以及所有其他系统上运行exe文件。 只使用纯本地的C++编程。
我正在使用的编译器是Visual Studio。然而,如果需要的话,我愿意更改编译器。
基本上标题已经说得很清楚了:我想在编写C++代码时完全禁用CRT。
我希望能够在Win98上以及所有其他系统上运行exe文件。 只使用纯本地的C++编程。
我正在使用的编译器是Visual Studio。然而,如果需要的话,我愿意更改编译器。
指南 - 如何在Windows上避免C/C++运行时:
如果您真的想在Windows 98上使其正常工作,则需要使用较旧版本的Visual Studio并执行类似上述步骤的操作。在Visual Studio开发环境中设置编译器选项
1)打开项目的属性页对话框。有关详细信息,请参见如何:打开项目属性页。
2)展开C/C++文件夹。
3)选择代码生成属性页。
4)修改运行库属性。
msvcrt<toolchain-version>.dll
。请注意中间的三个字母c
、r
和t
。 - n. m.虽然有可能做到,但是有很多缺点,因此我不建议这样做(我不会详细解释这些缺点)。
你为什么要针对Win98?现在几乎没有人使用它。我建议使用Windows Vista或更高版本,但完全取决于你。
首先,你需要禁用优化,将RT lib设置为MT,禁用安全检查(这会使你的应用程序不太安全!),以及其他一些事项。要做到这一点,请转到C/C++设置并将/Od /MT /GS-
添加到命令行中。
接下来进入代码生成,将启用C++异常设置为“否”。
然后进入链接器,并将/NODEFAULTLIB
添加到命令行中。
最后,导航到高级选项并设置入口点。
完成上述步骤后,你就可以开始了!
在不知道需要做什么的情况下,帮助起来很困难。通常情况下,您不能删除CRT,原因在这里:
这意味着如果没有CRT,则无法使用stdio(除非稍后手动链接它),并且您也无法在控制台中运行应用程序。
您可以通过创建静态库来删除CRT,这尽可能接近纯本地C ++,如果您不在其中链接外部库(那么,对象文件比静态库更接近本地C ++)。
根据操作系统,您甚至可能无法在没有CRT的情况下调用二进制文件中的函数(例如Windows)。因此,如果您只是想避免二进制开销,最好的选择是具有静态/动态库,该库链接到其他“启动器”或仅动态调用(仍然需要一种检索入口点的方法)。
再次强调,如果您没有提供足够的细节,很难确定您需要什么。
编辑:
如果您需要在较旧的win98上运行,则使用支持win98的编译器,并使用编译器标志指定要编译为win98。您可以尝试使用不同的编译器,例如Symantec C++ 7.5或Digital Mars C++。
我有使用Symantec编译器制作的程序,即使在Win 11上也能完美运行。
实际上,向90年代应用程序pfe32(程序员文件编辑器)的作者致敬,它可以在任何Windows版本上运行。