你确实很迷茫,你实际上并没有编写 C++ 代码。只有在使用 C++/CLI 语言编写代码时,才能使用 File::ReadAllBytes() 和 Assembly::Load() 等方法。它是 Visual Studio、C++/CLI、VB.NET 和 C# 支持的三种 .NET 语言之一。
C++/CLI 非常特别,因为编译器还支持编写本机 C++ 代码并自由地将其与 .NET 代码混合。您可以使用标准 C++ 库,只要您的代码符合 C++03 语言标准,编译器就会毫无怨言地将您的代码翻译成 IL。此外,您还可以访问所有 .NET Framework 类,例如 File 和 Assembly。
然而,结果与您从纯 C++ 编译器获得的结果不同。您将获得一个 .NET 程序集,与使用 C# 编写代码时获得的动物完全相同。它通过抖动在运行时即时编译,即使您的纯 C++ 代码也能得到这种处理。
如果你想创建一个真正的 C++ 程序,那么你必须开始使用另一个项目模板。避免使用 CLR 节点,而是选择 Win32 节点来选择您的项目模板。当心您将体验到的文化冲击,您在 .NET Framework 中学到的任何东西都不会在纯 C++ 项目中可用。没有等效的 File 类,您需要使用<iostream>
. 当然没有 Assembly 类,在本机代码中也没有对应的类。LoadLibrary() + GetProcAddress() 可能是最接近的匹配项,很难使用。准备好处理所有关于你期望它如何工作的假设,并为自己找到一本很好的 C++ 书籍,其中包含一些生存练习。
如果您这样做是为了避免依赖关系,那么请注意,您最终可能会遇到完全相反的问题。使用 DLL 的重要 C++ 项目将使您最终依赖于 C 运行时 DLL。必须由您将其部署在用户的机器上,它们不会像 .NET 那样预装在 Windows 上。