2017-04-24 91 views
-2

這很複雜,所以我可能會馬上丟失一些。很久以前,我們有一個32位的ActiveX控件從供應商購買,用於使用Visual C++ 6.0開發的內部程序。現在,我們將使用Visual Studio 2013更新我們的程序,以擁有32位和64位平臺。供應商不再支持C++,也沒有這個activex文件的64位版本。我能夠使用Visual Studio 2013 32位構建軟件,並且activex控件完美工作。但是,由於平臺的差異,使用64位軟件構建軟件時,除了需要activex控制的部分以外,所有軟件都可以正常工作。 現在我運行了OLE/COM對象查看器(OleView.exe)併成功創建了一個來自activex ocx文件的IDL文件。然後,我能夠編譯IDL文件(經過一些調試)來創建* _h.h和* _i.c文件。 問題:是否有一種簡單而優雅的方式來獲取這些文件並在64位平臺中重建activex?32位* .ocx文件將IDL文件轉換爲* _h.h和* _i.c文件轉換爲64位* .ocx文件

+0

你知道這些只是關於接口的文件嗎?重建一個ActiveX控件需要所有其他的源文件。你應該問爲什麼你真的需要一個64位版本?你是否需要增加的資源和記憶,還是僅僅是營銷,或者是一些老闆的屁股?你不能簡單地重新編譯這些文件到64位。如果您使用VS 2013(並詢問爲什麼不2017),那麼您需要從OCX中提取類型庫,將其保存爲.TLB文件,然後#import到您的項目中。 Google for DllSurrogate。無論您的32位OCX必須在32位進程中運行。 –

+0

@JoeWillcoxson,謝謝你的評論。儘管該項目僅在內部使用,但我們需要來自請求我們移至64位的客戶的DLL。我不知道爲什麼VS 2013被選中。如果您創建的答案表明無法使用我提供的參數完成,我會接受它。 – jackson80

回答

0

您不能只重新編譯組成OCX接口的頭文件和.c文件以創建64位OCX。 OCX由接口文件和許多其他文件組成,這些文件都是該控件的實現。試圖按照你的方式去做是行不通的。