C++/CLI.NET依赖项?

C++/CLI.NET依赖项?,.net,dependencies,c++-cli,.net-assembly,.net,Dependencies,C++ Cli,.net Assembly,我最近开始学习VC++。 在C#中,我有这样一句话: byte[] rn = File.ReadAllBytes("..."); Assembly.Load(rn); 但我想用母语做同样的事情。自然我用C++来了。 现在,我注意到在MSDN上,我可以从System.Reflection命名空间调用Assembly.Load(字节[]): 但这不会增加.NET依赖项吗?因此,用C++(或C++ +CLI)来克服我的目的,我对C(?)< /p >的差异不确定。 还是有更好的方法来完成我正在做的事情

我最近开始学习VC++。 在C#中,我有这样一句话:

byte[] rn = File.ReadAllBytes("...");
Assembly.Load(rn);
但我想用母语做同样的事情。自然我用C++来了。 现在,我注意到在MSDN上,我可以从System.Reflection命名空间调用Assembly.Load(字节[]):

但这不会增加.NET依赖项吗?因此,用C++(或C++ +CLI)来克服我的目的,我对C(?)< /p >的差异不确定。
<>还是有更好的方法来完成我正在做的事情?

你确实很迷茫,你实际上并没有编写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类,如文件和程序集

<>结果与你从纯C++编译器中得到的结果不一样。您将得到一个.NET程序集,与用C#编写代码时得到的完全相同。它在抖动时运行时编译得及时,甚至你的纯C++代码也得到了处理。 <>如果你想创建一个真正的C++程序,那么你必须开始使用另一个项目模板。避免使用CLR节点,而是选择Win32节点来选择项目模板。谨防你将体验到的文化冲击,你在NETFramework中所依赖的东西将在纯C++项目中获得。没有等效的File类,您需要使用
。当然没有汇编类,在本机代码中也没有与之等价的类。LoadLibrary()+GetProcAddress()可能是最接近的匹配项,很难使用。准备好处理你的预期工作,并找到一本好的C++书籍。
如果您这样做是为了避免依赖关系,那么一定要注意,您不太可能会遇到完全相反的问题。使用DLL的非平凡C++项目将使您最终对C运行时DLL依赖。它们必须在用户的机器上部署,它们不会在Windows上预装,比如.NET。

你确实很迷路,实际上你并没有编写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类,如文件和程序集

<>结果与你从纯C++编译器中得到的结果不一样。您将得到一个.NET程序集,与用C#编写代码时得到的完全相同。它在抖动时运行时编译得及时,甚至你的纯C++代码也得到了处理。 <>如果你想创建一个真正的C++程序,那么你必须开始使用另一个项目模板。避免使用CLR节点,而是选择Win32节点来选择项目模板。谨防你将体验到的文化冲击,你在NETFramework中所依赖的东西将在纯C++项目中获得。没有等效的File类,您需要使用
。当然没有汇编类,在本机代码中也没有与之等价的类。LoadLibrary()+GetProcAddress()可能是最接近的匹配项,很难使用。准备好处理你的预期工作,并找到一本好的C++书籍。
如果您这样做是为了避免依赖关系,那么一定要注意,您不太可能会遇到完全相反的问题。使用DLL的非平凡C++项目将使您最终对C运行时DLL依赖。它必须由您部署在用户的计算机上,而不是预先安装在Windows上,如.NET。

C++-CLI aleady使用.NET framework,因此如果您想使用.NET framework和垃圾回收,可以使用C++-CLI(或更新的C++-CX)。当然,这些代码在Windows环境之外是不可移植的。我将为Windows开发。因此,在我想做的事情中使用C++/CLI,而不是使用像C#这样的语言,是没有意义的?我只是想避免依赖关系。@Joe“愚蠢”的是微软选择了“C++/CLI”(之前更糟糕的是:“C++的托管扩展”)作为其.NET语言的名称。C++有一个非常明确的含义,尽管微软努力引入混淆。你想知道如何在C++中一行读取一个完整文件还是如何在C++中进行反射?标准C++不支持反射。但是,Windows API支持加载DLL和动态调用导出函数(请参见
LoadLibrary
GetProcAddress
)。但是,您不会得到像.Net授予的扩展类型信息或动态代码生成这样的内容。C++-CLI aleady使用.Net framework,因此如果您想使用.Net framework和垃圾回收,可以使用C++-CLI(或更新的C++-CX)。当然,这些代码在Windows环境之外是不可移植的。我将为Windows开发。因此,在使用局域网的基础上,使用C++/CLI来完成我想做的事情是没有意义的