Как я могу решить фатальные ошибки компилятора при установке 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;
- установить параметр компилятора Delphi " создать C++ .файлов, заголовков, имен, экспорт"
- построить проект
-
затем компилятор Delphi XE3 генерирует неправильный файл заголовка Unit1.ГЭС с линиями:
extern пакет TVector3f _ _ fastcall VectorAdd (поплавок константный v, const float f)/ перегрузка */; пакет extern TVector4f _ _ fastcall VectorAdd (поплавок константный v, const float f)/ перегрузка */;
Если теперь вы пытаетесь использовать этот файл заголовка 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.
- есть второй способ исправить ошибки такого автоматического заголовка-улучшение компилятора 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.ТЭЦ. Если кто может помочь здесь, это было бы здорово.
@Я тоже получаю эти предупреждения, но у меня ничего не изменилось. Просто игнорировать?!