![]() |
1
2
AS Aaron Fischer 建议,尝试重新编译C++应用程序,打开/CLR选项,然后开始利用.NET平台。 CLI/C++是很容易拾取的,如果你已经知道C和C++,它提供了.NET世界和本地C++之间的桥梁。 如果您当前的C++代码不能用CL/CLR打开,那么我建议您将应用程序构建为静态LIB(没有/CLR启用),然后让您的主()在调用您的遗留应用程序入口点的CLI/C++项目中。这样,您至少可以开始利用.NET实现新功能。 对于已经被“移植”到.NETCLI/C++的“遗留”C/C++应用程序的例子,请检查.NET端口的 Quake 2 和 Quake 3: Arena . |
![]() |
2
1
嗯,这真的取决于语言。Python接口,例如,最容易用PosithPython来完成,许多其他语言将要求你像C一样使用C语言库来连接它们,并将回调声明为“C”(不幸的是,通常不能使用其他语言中的C++类定义)。 但我也会问你打算使用它作为C++是一种复杂的语言,但一旦你熟悉它,它是非常强大的,并不是很难编码比其他语言。我唯一能想到的非常好的例外是,如果你计划使用一个只存在于一种语言中的强大的库,并且没有一个象样的C++替代品(图形库可能是最好的例子,因为你必须非常熟悉它们才能有效地使用它们)。 同样值得指出的是,如果将C++代码与另一种语言进行接口,那么就失去了该语言所授予的跨平台兼容性。 |
![]() |
3
1
如果您想在C++和Python之间工作, Boost Python 就是你要找的。您可以为cython手工编写c-python绑定,但这在许多方面限制了您编写代码的方式。这是最简单的方法,如下面的一些片段所示 this tutorial : 执行Hello World的简单函数:
将其公开给python所需的boost python代码:
如何从python使用此代码:
相反的方向有点困难,因为Python不编译为本机代码。您必须将Python解释器嵌入到C++应用程序中,但是需要做的工作是文档化的。 here . 这是一个调用Python解释器并提取结果的例子(Python解释器定义C++中使用的对象类):
|
![]() |
4
1
您可以将C++项目中的公共语言运行时支持更改为/CLR。从这点上,您可以在C++代码中使用任何.NET功能。这也包括在项目中创建WinForms。您还可以添加处理UI和其他功能的C库。 |
![]() |
5
0
在.NET世界中,您始终可以选择为C/VB.NET程序集创建COM/ActiveX互操作层。 然后,您可以使用C++应用程序中的普通COM API来创建实际包装您的.NET程序集的COM服务器实例。 这方面的好处在于,简单的参数(如int、bool、string、float等)被映射到它们的COM等价物中。但是据我所知,不可能轻松地传递完整的.NET对象(您创建的类的实例)。 还要注意,COM互操作调用相对较慢。在紧循环中,不应该从C++代码中连续调用COM互操作方法。 COM/ActiveX传统上依赖于Windows注册表,这并不理想,因为它是一个很大的依赖项。但是也可以使用 Registration-Free COM互操作以避免此依赖关系。 This article 介绍为COM互操作注册.NET程序集所需的步骤。 |
![]() |
Glory Raj · 有什么方法可以使这两个块具有共同的功能吗 2 年前 |
![]() |
Justin · Python自属性重命名 7 年前 |
![]() |
Sabutobi · 长dict属性行的重构 7 年前 |
![]() |
Falco Alexander · 简单LINQ重构/样式 7 年前 |
|
05bs001 · Euler 12需要优化 7 年前 |
![]() |
slartidan · 如何将lambda表达式重构为方法引用? 7 年前 |
|
Alex · 在Java类中频繁使用与映射键相同的字符串[已关闭] 7 年前 |