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

  • 第一个是VS2008插件:静态链接到MFC的DLL,我将其结合到某些软件中。
  • 第二个是C++ Builder VCL程序:该程序具有使用VCL制作的巨大GUI。

  • 我的任务是将第二个程序合并到第一个程序(插件)中,这样,一旦我在前面提到的软件中对插件进行了充电,便可以启动第二个程序,使用该程序处理数据并保存更改。所以我需要能够一起使用两个项目中的方法和类...

    我一直在寻找一种合并VC++和c++构建器项目的方法后,我有些沮丧。兼容性问题是巨大的!特别是在我的案例中同时涉及到MFC和VCL。
    在我看来,从任何一方进行“迁移”似乎都是不可能的,尤其是对于我是Microsoft系统编程的新手而言。因此,如果有其他选择,我会很高兴。

    因此,我想请您帮助开发人员,特别是那些遇到过类似情况的开发人员。对于任何类型的答案,我将不胜感激。

    随时问我任何问题以澄清此帖子。

    并预先感谢您!

    最佳答案

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

    然后,您可以创建接口(interface)类的纯虚拟类,从纯虚拟类派生接口(interface)类。创建两个C函数,一个是MFC类的新函数,但返回接口(interface)类,另一个是从接口(interface)指针中删除,但实际上是删除其后的MFC类。

    作为示例.h文件的快速示例(此处只是提示,未经测试)。这是由于两个编译器之间的虚拟接口(interface)相同而起作用的。我在反向操作中非常一致(用C++ Builder编写代码,可以在用VC6编写的古老MFC应用程序中使用该代码)。

    接口(interface)文件(包含在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;
    }
    

    关于c++ - 合并vc++和c++构建器项目,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21095303/

    10-09 20:32
    查看更多