可视化合并一个vc++和一个c++构建器项目
visual Merging a vc++ and a c++ builder project
我面临的情况是,我有两个不同的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。
- 函数向量_指针有不同的原型,我可以构建一个吗
- VSCode-有一个红色下划线,但程序构建和运行正确,并且出现配音错误
- 构建一个由C和C++文件组成的库
- 如何使用 samtools C API 构建一个简单的主.cpp文件
- 在一个解决方案中针对第三方静态库 (Creo) 的不同版本(版本)进行构建
- 在Qt/C++中从一个代码构建两个略有不同的项目
- 如何构建一个 setup.py 来编译C++使用 Python、pybind11 和 Mingw-w64 的扩展?
- 如何构建一个异常类来报告C++中的哪些文件和行号?
- 在 Visual Studio 中构建一个没有 C/C++ 运行时的静态库
- 创建一个类来访问和指定向量类型,并构建一个获取位置并为其分配区域的类
- 下一个云桌面客户端构建过程
- 将vector<vector<double>>从x86平台中创建的一个进程发送到x64中构建的另一个进程的最快方法是什么
- cmake在构建过程中使用另一个工具检测标志
- 使用步骤c++构建一个向量
- 如何制作一个根据拉取请求关闭和打开功能的构建系统?
- 为什么它无法在 c++ 中全局声明一个构建为 dll 文件的类?
- 为什么我们需要构建一个提升库,仅仅包含头文件还不够吗,因为提升是模板
- 我正在尝试构建一个简单的程序来从 mysql 数据库中读取信息
- 可视化合并一个vc++和一个c++构建器项目
- 创建一个构建框架来支持编译支持多个平台的代码