编辑:GLScene现在与RAD Studio XE3(包括C++ Builder)兼容。
Now there is full compatibility of GLScene with Embarcadero RAD Studio
C++Builder XE3 as in design and runtime mode.
You can download it from http://yadi.sk/d/o1QGI2KA10MK1 (95Mb)
- 来自Pal Wassail's post on the Embarcadero forum thread。
{quote:title=David M wrote:}{quote}
Hi,
I'm trying to install GLScene into RAD Studio...
David
这里是针对Delphi XE3头生成器的EMB开发人员的更简单的测试 -
1.创建VCL表格申请表
2.在Unit1.pas接口部分添加
type
TVector3f = array[0..2] of single;
TVector4f = array[0..3] of single;
function VectorAdd(const v : TVector3f; const f : Single) : TVector3f; overload;
function VectorAdd(const v : TVector4f; const f : Single) : TVector4f; overload;3.添加实施部分
function VectorAdd(const v : TVector3f; const f : Single) : TVector3f;
begin
Result[0]:=v[0]+f;
Result[1]:=v[1]+f;
Result[2]:=v[2]+f;
end;
function VectorAdd(const v : TVector4f; const f : Single) : TVector4f;
begin
Result[0]:=v[0]+f;
Result[1]:=v[1]+f;
Result[2]:=v[2]+f;
Result[3]:=v[3]+f;
end;设置Delphi编译器选项“生成C++ .objs,标题,命名空间,导出”
构建项目
然后Delphi XE3编译器生成错误的头文件Unit1.hpp:
extern PACKAGE TVector3f __fastcall VectorAdd
(float const v,const float f)/ overload * /;
extern PACKAGE TVector4f __fastcall VectorAdd
(float const v,const float f)/ overload * /;
如果您现在尝试在my.cbproj中使用此头文件Unit1.hpp,则会出现致命错误:
“E2238 ......中的多个声明”
是的,如果您将矢量数组类型更改为记录:
TVector3f = record
case boolean of
true : (Coord: array[0..2] of single);
false : (X,Y,Z: single);
end;那么问题就可以解决,因为在这种情况下Delphi编译器会生成
extern PACKAGE Vectortypes :: TVector3f __fastcall VectorAdd
(const Vectortypes :: TVector3f& v,const float f)/ * overload * /;
extern PACKAGE Vectortypes :: TVector4f __fastcall VectorAdd
(const Vectortypes :: TVector4f& v,const float f)/ * overload * /;
并且您可以在没有“多个声明”错误的情况下构建C++ Builder VCL应用程序。它是在2007年为旧的GLScene版本完成的,但是现在你需要从VectorGeometry.pas模块开始重写新库中的部分代码。
有第二种方法来修复这种自动标头的错误 - 在生成C / C++标头,命名空间和包选项中改进Delphi编译器。但它掌握在EMB开发人员手中。