可视化合并一个vc++和一个c++构建器项目

visual Merging a vc++ and a c++ builder project

本文关键字:一个 构建 项目 c++ 合并 可视化 vc++      更新时间:2023-10-16

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

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

  • 第二个是C++Builder VCL程序:一个使用VCL制作的具有巨大GUI的程序。

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

在我一直在寻找一种将VC++和c++构建器项目合并的方法之后,我有点沮丧。兼容性问题非常严重!特别是MFC和VCL都涉及到我的案例。从任何一方"迁移"对我来说都是不可能的,尤其是我刚开始在微软系统上编程。因此,如果有其他选择,我会很高兴。

所以我请求你们的帮助,开发伙伴们,尤其是那些面临类似情况的人。我将感谢任何类型的答案。

请随意问我任何问题来澄清这篇文章。

并提前感谢您!

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

然后,您可以创建接口类的纯虚拟类,从纯虚拟类派生接口类。创建两个C函数,一个是新的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 * );

MFC文件仅包含在VC端中

class cInterface : public iInterface
{
public:
unsigned short __stdcall  DoOneThing( char * );
long __stdcall  DoTwoThing( char * );
private:
void WhatEver( void );
bool x;
}

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

互联网上有很多COM Turtorial。