Как я могу решить фатальные ошибки компилятора при установке GLScene в RAD Studio 2010?

я пытаюсь установите GLScene в RAD Studio 2010, С целью использования его из проекта в основном C++. Я загрузил последний снимок (5991, ноябрь 2011) и пытались скомпилировать и установить два основных пакета:GLScene_DesignTime и GLScene_RunTime. Я даже не пробовал некоторые другие библиотеки (CUDA и т. д.), Я просто хочу запустить базовые пакеты.

я столкнулся с рядом проблем, одной из которых я не могу решить, и Я ищу помощь любого, кто имеет успешно установлен GLScene, или, возможно, знаете как решить эти ошибки компилятора Delphi.

первая проблема (решена?)

при компиляции ряд файлов дал следующую ошибку:

[DCC Warning] GLSelection.pas(297): W1025 Unsupported language feature: 'abstract class method'

это вызвано объявлением метода что-то вроде:

TGLBaseSelectTechnique = class
  public
    class function IsSupported: Boolean; virtual; abstract;

кажется, что метод виртуального абстрактного класса не поддерживается в Delphi 2010, и у меня есть решил его, удалив 'abstract ' и предоставление фиктивной реализации, например, просто возвращение false.

вторая проблема (не решена) - ошибки компилятора Delphi

теперь я сталкиваюсь с двумя более серьезными ошибками. При компиляции компилятор завершается так:

[DCC Fatal Error] Exception EAccessViolation: Access violation at address 05AE8ED9 in module 'dcc140.dll'. Read of address 00000003
[DCC Error] Catastrophic failure (Exception from HRESULT: 0x8000FFFF (E_UNEXPECTED))

он не говорит, какой файл вызвал это, но я думаю это вызвано Spline.pas. Иногда и не так часто, я получаю это:

[DCC Fatal Error] Spline.pas(1): F2084 Internal Error: AV062D8ED9-R00000003-0

этот указывает Spline.pas, и я думаю, что первая ошибка, вероятно, связана с файлом тоже, потому что после получения первого, если я затем очистить проект, очистка не удастся сказать, что он не может удалить Spline.hpp. (Я должен закрыть и снова открыть IDE.) Spline.hpp просто содержит следующее:

// CodeGear C++Builder
// Copyright (c) 1995, 2009 by Embarcadero Technologies, Inc.
// All rights reserved

// (DO NOT EDIT: machine generated header) 'Spline.pas' rev: 21.00

#ifndef SplineHPP
#define SplineHPP

#pragma delphiheader begin
#pragma option push
#pragma option -w-      // All warnings off
#pragma option -Vx      // Zero-length empty class member functions
#pragma pack(push,8)
#include <System.hpp>   // Pascal unit
#include <Sysinit.hpp>  // Pascal unit

и там останавливается. Мне кажется, что это не удалось при попытке сгенерировать файл HPP.

Я всегда получаю один из этих двух неудач. второй только один я могу связать с конкретным файлом; первый проваливается в середине проекта, но я не вижу, куда он попал, когда он провалился. Я компилирую изнутри IDE.

я заглянул Spline.pas, и это кажется довольно простым кодом - я не вижу ничего необычного вообще. Ты можешь!--51-->найти здесь, и, по-видимому, файл не трогали семь лет... поэтому я думаю, что он должен скомпилировать:)

если я изменю настройки проекта, чтобы он не генерирует заголовки, он компилируется нормально. (Создание только obj-файлов и любых других параметров, которые не включают "заголовки", все работают нормально.) Но это не хороший обходной путь для меня-в конце концов, мне нужно использовать его из C++ Builder, поэтому моя обычная настройка будет "генерировать все файлы C++ Builder". Как минимум, мне нужны файлы HPP и OBJ.

кто-нибудь здесь использовал GLScene в последней версии C++ Builder? Вы сталкивались с подобными проблемами? Любая идея, как это решить один?

я использую:

  • RAD Studio 2010 (полностью исправлено и обновлено; установлены DDevExtensions и IDEFixPack.)
  • снимок ноября 2011 года; я попробовал снимок марта 2011 года тоже и получил те же проблемы. ссылка на снимки здесь.
  • пакеты Delphi 2010 изменены только путем изменения выходных данных компоновщика для создания файлов C++ Builder; а также пакетов BCB 6. Оба дают одинаковый ошибки.

4 ответов


Edit: GLScene теперь имеет совместимость с RAD Studio XE3 (включая C++ Builder.)

Теперь есть полная совместимость GLScene с Embarcadero RAD Studio C++Builder XE3 как в режиме разработки и выполнения.

вы можете скачать его из http://yadi.sk/d/o1QGI2KA10MK1 (95 МБ)

- С сообщение Pal Wassail на форуме Embarcadero thread.


{цитата: title=David M написал:} {Цитата} Привет,

Я пытаюсь установить GLScene в RAD Studio... Дэвид!--6-->

и вот более простой тест для разработчиков EMB генератора заголовков Delphi XE3 -

1.Создание приложения формы VCL 2.Добавить в Unit1.раздел интерфейса ССА

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;
  1. установить параметр компилятора Delphi " создать C++ .файлов, заголовков, имен, экспорт"
  2. построить проект
  3. затем компилятор Delphi XE3 генерирует неправильный файл заголовка Unit1.ГЭС с линиями:

    extern пакет TVector3f _ _ fastcall VectorAdd (поплавок константный v, const float f)/ перегрузка */; пакет extern TVector4f _ _ fastcall VectorAdd (поплавок константный v, const float f)/ перегрузка */;

  4. Если теперь вы пытаетесь использовать этот файл заголовка Unit1.ГЭС в моем.cbproj по вам фатальная ошибка: "E2238 несколько объявлений в..."

Да, если вы измените типы векторных массивов на записи:

 TVector3f = record
    case boolean of
      true  : (Coord: array[0..2] of single);
      false : (X,Y,Z: single);
end;
  • тогда проблема может быть решена, потому что в этом случае компилятор Delphi генерирует

    внешний пакет Vectortypes:: TVector3f _ _ fastcall VectorAdd (const Vectortypes:: TVector3f & v, const float f) / * перегрузка */; внешний пакет Vectortypes:: TVector4f _ _ fastcall VectorAdd (const Vectortypes:: TVector4f &v, const float f) /*перегрузка*/;

и вы можете создать приложение VCL C++Builder без ошибки "множественного объявления". Это было сделано для старой версии GLScene в 2007 году, но теперь вам нужно переписать часть кода в новой библиотеке, начиная с VectorGeometry.модуль pas.

  1. есть второй способ исправить ошибки такого автоматического заголовка-улучшение компилятора Delphi в генерации заголовков C/C++, пространств имен и пакетов. Но это в руках разработчиков EMB.

вот как я делаю это:

  • скачать и извлечь этот ZIP-файл (непосредственно в корневую папку GLScene, что позволяет перезаписывать ее по мере необходимости)
  • загрузите соответствующую версию RAD Studio (2007 до XE2) и откройте файл *GLScene_Group.groupproj по* (Где = ваша версия RAD Studio)
  • сборка / установка каждого пакета в групповом порядке

Я тщательно собрал эти фиксированные пакеты, чтобы убедитесь, что все они установлены и функционируют правильно с 2007 по XE2. Некоторые пакеты (в нижней части каждой группы) требуют дополнительных зависимостей для работы (например, пакет Python), поэтому помните об этом.

я проверил и подтвердил, что эти работы на RAD Studio 2007 для XE2 только.

Не забудьте добавить \Source папка (и все подпапки) к путям поиска (либо для самой IDE, либо для отдельного проекта, как вы хотите) в противном случае проекты, использующие компоненты GLScene, не смогут скомпилировать жалобы на отсутствующие единицы.

наслаждайтесь!


Не для RAD Studio 2009, но для старой установки GLScene в BCB6 она работала хорошо. Но текущая версия после установки в RAD Studio XE/XE2 / XE3 не работает вообще. Кажется, что главная проблема кроется в механизме перегрузки процедур в Vectorgeometry.pas, поэтому компилятор Delphi (с использованием опции для вывода всех файлов и пакетов C++) создает совпадающие строки в Vectorgeometry.ГЭС и другие. Таким образом, у вас есть визуальные компоненты в панели C++Builder, но ваш сбой приложения с ошибками во время построения. Его нужно починить .pas-файлы разработчиков GLScene.

при попытке построить приложение с GLScene под C++Builder XE3 вы получите более 50 ошибок BCC32 в glcrossplatform.ГЭС, vectorgeometry.ГЭС и так далее. Есть способ починить библиотеку на свое усмотрение. Создайте новую копию каталога GLScene. В GLCrossPlatform.pas переименуйте процедуру RGB в GLRGB (это работа!). Затем в VectorGeometry.ССА и во многих другие файлы исходных кодов изменяют все процедуры перегрузки с немного разными именами параметров, поэтому вы не должны сталкиваться с совпадающими процедурами .HPP-файлы после опции Delphi выводят C++ (последняя опция, включающая пакеты). Затем перестройте все пакеты GLScene. В конце процесса я надеюсь, что он должен работать для C++Builder XE3.


у меня точно такие же ошибки.

@вторая проблема

перейти к "сплайн.па" и изменить

TCubicSplineMatrix = array of array[0..3] of Single;

to

TCubicSplineMatrixEx = array[0..3] of Single;

TCubicSplineMatrix = array of TCubicSplineMatrixEx;

Теперь "Rad Studio 2009" может компилировать и устанавливать GLScene для C++Builder. Я могу запустить новое приложение VCL C++Builder и выбрать компоненты GLScene из панели инструментов и удалить мою форму VCL.

Я думаю, это решение вашей основной проблемы, но, к сожалению, я не могу скомпилировать свой проект VCL успешно. Я получаю более 50 ошибок BCC32 в glcrossplatform.ГЭС и vectorgeometry.ТЭЦ. Если кто может помочь здесь, это было бы здорово.

@

Я тоже получаю эти предупреждения, но у меня ничего не изменилось. Просто игнорировать?!