2009-12-31 85 views
0

我被给了一个半完成的项目完成。它是用Visual Studio 2005以C++语言编写的。在VB.Net中继续C++项目吗?

是否有可能以某种方式在VB.Net中继续项目?如果是这样,你能指导我吗?

感谢

回答

0

如果应用程序不这样做,那么我不建议尝试做VB中的“休息”,除非有现有和新的代码,这样你可以把现有的C++的东西合理分割成库被VB代码使用。但是,只有当它有任何意义时(认为封装在这里 - 代码是否适合自己站立(或至少是瘦)?)

否则,它听起来像一个维护的噩梦,其中的一部分例程在一个代码库中,部件在另一个代码库中,调试和增强功能变得十分困难。

0

假设你正在谈论VB6,你必须编译C++项目与extern "C"装饰输出一个dll文件。这意味着只有功能,根本没有课程。如果你可以让你的项目像这样工作,这是将它集成到vb6中的最简单的方法,只需查找Declare Function/Sub并将声明翻译为合适的。

现在的其他方式,其中包括工人阶级,是从你的C++项目公开COM对象,并在VB6你只需要添加一个引用它,使用它,就像任何VB6类。然而,这是更多的工作。

+0

感谢您的及时回复。 对不起,我应该更具体。我正在讨论使用vb​​.net。这是如何改变画面的? – user228058 2009-12-31 18:04:50

+0

那么VB.NET与vb6具有相同的导入功能,因此涉及到C++的dll,所以第一点仍然几乎相同。 COM对象也很容易从VB.NET访问。不过,它确实打开了第三个选项:您可以将C++项目编译为托管dll并手动公开托管类的代码,然后从vb.net添加参考并无缝地使用它们,而不会出现问题。如果你正在使用这个路由,请查看'IDispose',因为非托管资源需要.NET特别照顾。 – Blindy 2009-12-31 18:25:38

+0

因为除了函数之外,我需要使用C++类,你会说选项#3最适合吗? – user228058 2009-12-31 18:46:58

1

我已经在Visual Studio中这样做了,尽管我的场景可能有所不同。

我被给了一个现有的C++应用程序来添加功能,并决定在C#/ VB中实现新功能。在应用程序的常规属性中,我将“通用语言运行时支持”设置更改为/ clr。然后我在C#和VB中创建了我的新类,并使用项目属性的“C/C++”节点上的“解析#使用引用”部分将它们链接起来。

这并没有消除编写C++的需要,因为我仍然需要编写一些C++/CLI来集成应用程序的两个部分,但它确实让我编写了大部分我想要编写的新功能我更有生产力的语言。

当然,如果你在C++中有半实现的对象,并且你想在VB中实现另一半的对象,这可能会令人讨厌,在这种情况下,这种方法可能会得到很烦人的使用和维护。

+0

谢谢,dsolimano 我可能确实有一些半实施的对象。你说这可能很烦人,但是可以继续推动VB中的对象么? 另外,你能否提供一些代码示例(或指导)来整合2个部分? – user228058 2009-12-31 18:29:43

+0

你可以做的一件事就是在VB对象中实现新的功能,然后让C++对象将调用转发给VB对象。这会给你一个一半的C++和一半的VB。本质上你会使用聚合。对于C++/cli方面的快速介绍,我喜欢http://www.codeproject.com/KB/mcpp/quickcppcli.aspx – dsolimano 2009-12-31 18:52:34

+0

回到你的原始答复,你在哪里创建了新的类 - 在现有的C++中项目?我没有看到使用其他语言创建课程的选项... – user228058 2010-01-01 16:16:03