2012-04-03 129 views
0

我在Borland C++ Builder XE2中創建了一個32位DLL沒有問題。不知怎的用Borland C++ Builder創建一個64位DLL

我的任務是創建一個64位版本。在研究了「如何」之後,我才知道Builder還不支持64位編譯。

經過一番挖掘,看起來似乎只有這樣做(或任何類型的64位編譯)的方式是使用visual studio express命令行。因此,我想下面的命令來嘗試編譯:

CALL "C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.Cmd" /x64 
"C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64\cl.exe" -IC:\projects\dll -I"C:\Program Files (x86)\Embarcadero\RAD Studio\9.0\include\windows\vcl" -I"C:\Program Files (x86)\Embarcadero\RAD Studio\9.0\include\windows\rtl" -MD -LD C:\projects\dll\dll.cpp -FeMyDLL.dll 

運行上面給了我以下錯誤:

C:\Program Files (x86)\Embarcadero\RAD Studio\9.0\include\windows\rtl\sysmac.h(162) : fatal error C1189: #error : "System.hpp/sysmac.h and related headers need __declspec(uuid(..)) and __uuidof support"

瞎在谷歌只給了我上加入的#define DECLSPEC_UUID一些帖子(GUID )根本沒有幫助。

所以我的問題是,有沒有人成功編譯過64位Borland C++項目(或在Borland中創建的應用程序/ DLL)(以及如何分步說明)?

+0

試圖#include一個編譯器的頭文件並與另一個編譯器一起構建是一個相當有保證的失敗鯨魚。 MSVC *不支持__uuid,我猜測測試有問題。 Borland在語言中添加了很多非標準關鍵字,所以這通常是一個失敗的原因。 – 2012-04-03 13:05:29

回答

1

您無法使用Visual Studio編譯C++ Builder RTL/VCL代碼。您必須將代碼移植到Visual C++或其他C++編譯器,並使用其框架代替Embarcadero的代碼,否則在Delphi XE2中重寫代碼,以便繼續使用Embarcadero的RTL/VCL和Delphi 64位編譯器。