【发布时间】:2012-04-03 09:28:36
【问题描述】:
我在 Borland C++ Builder XE2 中创建了一个 32 位 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) : 致命错误 C1189: #error : "System.hpp/sysmac.h 和相关头文件需要 __declspec(uuid(..)) 和 __uuidof 支持"
在 Google 上闲逛只给了我一些关于添加 #define DECLSPEC_UUID(guid) 的帖子,这根本没有帮助。
所以我的问题是,有没有人成功地为 64 位编译过 Borland C++ 项目(或在 Borland 中创建的应用程序/DLL)(以及如何一步一步地编译)?
【问题讨论】:
-
尝试#include 一个编译器的头文件并用另一个编译器构建它是一个相当肯定的失败鲸鱼。 MSVC 确实 支持 __uuid,我猜这个测试有问题。 Borland 在语言中添加了很多非标准关键字,所以这通常是一个失败的原因。
标签: dll 64-bit c++builder c++builder-xe2