合并vc ++和c ++构建器项目

时间:2014-01-13 15:41:12

标签: c++ visual-c++ mfc c++builder vcl

我面临的情况是我有两个不同的c ++项目:

  • 第一个是VS2008插件:一个静态链接到MFC的DLL,我将把它合并到某个软件中。

  • 第二个是C ++ Builder VCL程序:一个程序,它使用VCL创建了一个巨大的GUI。

我的任务是在第一个(插件)中加入第二个,这样一旦我在前面提到的软件中插入插件,我就可以启动第二个程序,使用它处理数据,并保存变化。所以我需要能够同时使用两个项目的方法和类......

在我一直在寻找合并VC ++和c ++构建器项目的方法后,我有点郁闷。兼容性问题是巨大的!尤其是MFC和VCL都涉及到我的案例。 从任何一方“迁移”对我来说似乎都是不可能的,尤其是我是微软系统编程的新手。如果有另一种选择,我会很高兴。

所以我要求你帮助开发人员,尤其是那些面临类似情况的人。我会很感激任何类型的答案。

随时问我任何问题以澄清这篇文章。

提前谢谢你!

2 个答案:

答案 0 :(得分:1)

如果要与C ++类接口,请确保传递的数据只是基本的c ++类型,接口中不允许使用STL或MFC或VCL。

然后,您可以创建接口类的纯虚拟类,从纯虚拟类派生接口类。创建两个C函数,一个是new,它是MFC类但是返回接口类,一个从接口指针中删除但实际上删除了它后面的MFC类。

作为示例.h文件的一个简单示例(刚刚在这里,未经测试)。这可以通过两个编译器之间的虚拟接口相同来实现。我反过来一直这样做(在C ++ Builder中编写可以在用VC6编写的古老MFC应用程序中使用的代码)。

接口文件(包含在C ++ Builder代码和MFC代码中)

class iInterface
{
   public:
      virtual unsigned short __stdcall DoOneThing( char * ) = 0;
      virtual long __stdcall DoTwoThing( char * ) = 0;
}

iInterface * __stdcall NewcInterface();
void __stdcall DeletecInterface( iInterface * );

仅包含在VC端的MFC文件

class cInterface : public iInterface
{
   public:
      unsigned short __stdcall  DoOneThing( char * );
      long __stdcall  DoTwoThing( char * );

   private:
      void WhatEver( void );

      bool x;
}

答案 1 :(得分:0)

当您需要完全不同的运行时环境(如Basic和C ++或VCL和MFC)时,您需要定义所有模块都可以使用的接口。你不是第一个遇到这个问题的程序员。在Windows上运行数十年的一个选择是组件对象模型(COM)。

互联网上有很多COM Turtorials