我是一名编程学生,我现在有两个C#课程,这个学期我正在学习第一个C ++课程。
出于好奇,是否可以从C ++应用程序调用C#应用程序?
如果是这样,是否也可以检查运行该程序的计算机是否具有.NET框架?
我只是好奇,我认为如果可能的话,那将是一个很好的小程序,可以作为未来的工具。
仅供参考,以下是我想做的事情:
答案 0 :(得分:3)
有许多方法可以从C#调用.Net代码。
您可以使用COM Interop公开类,也可以使用C ++ / CLI创建“桥”。
您可以通过exporting methods from the C# DLL在“原始”C ++(无COM)中执行此操作。
但是,在您的情况下,您可以使用CreateProcess
简单地启动C#EXE文件。
答案 1 :(得分:1)
出于好奇,是否可以从C ++应用程序调用C#应用程序?
是。这里有一些选择。如果使用C ++ / CLI,则可以直接在C ++中使用C#中定义的类型。否则,一种典型的方法是使用COM,将C#类型作为COM对象使用。
如果是这样,是否也可以检查运行该程序的计算机是否具有.NET框架?
是。通常,您只需在应用程序中安装框架即可。这是shows a few options for checking which version of .NET (if any) is installed。
页面答案 2 :(得分:0)
C#(实际上是.NET)应用程序实际上是一个非托管的存根exe,它加载.NET环境然后跳转到C#代码。
换句话说,C#app始终包含在非托管进程中。因此,如果您愿意限制自己使用C#DLL而不是C#应用程序,则可以将它们托管在其中 你自己的C ++过程。
请注意,这里的区别在于您永远不会关闭C ++进程,它会成为C#代码的主机 - 这基本上是Windows在运行C#应用程序时所做的事情。