簡體   English   中英

合並vc ++和c ++構建器項目

[英]Merging a vc++ and a c++ builder project

我面臨的情況是我有兩個不同的c ++項目:

  • 第一個是VS2008插件:靜態鏈接到MFC的DLL,我將其結合到某些軟件中。

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

我的任務是將第二個程序合並到第一個程序(插件)中,這樣,一旦將插件插入我之前提到的軟件中,我就可以啟動第二個程序,使用該程序處理數據並保存更改。 所以我需要能夠一起使用兩個項目中的方法和類...

我一直在尋找一種將VC ++和c ++構建器項目合並的方法后,我有些沮喪。 兼容性問題是巨大的! 特別是在我的案例中同時涉及到MFC和VCL。 在我看來,從任何一方進行“遷移”似乎都是不可能的,尤其是對於我在Microsoft系統上進行編程是不熟悉的。 因此,如果有其他選擇,我會很高興。

因此,我想請您幫助開發人員,特別是那些遇到過類似情況的開發人員。 對於任何類型的答案,我將不勝感激。

隨時問我任何問題以澄清此帖子。

並預先感謝您!

如果要與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 * );

僅VC端包含的MFC文件

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

   private:
      void WhatEver( void );

      bool x;
}

當您必須使用完全不同的運行時環境(例如Basic和C ++或VCL和MFC)時,您需要定義一個所有模塊都可以使用的接口。 您不是第一個遇到此問題的程序員。 在Windows上運行數十年的一種選擇是組件對象模型(COM)。

互聯網上有很多COM教程

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM