BCB6 -> XE2

dział ogólny

BCB6 -> XE2

Nowy postprzez oneiro » środa, 23 stycznia 2013, 00:10

Witam,

Postanowiłem zmienić kompilator, a żeby nie było większych problemów pozostałem w tej samej linii kompilatora, ale w nowszej wersji (z BCB 6 -> XE2).

Ale pojawił się problem. Po pierwsze poniższych nagłówków nie było, ale wystarczyło dopisać "CVLTree." przed oryginalną nazwą i to przeszło (mam nadzieję, że tak powinienem to rozwiązać
KOD cpp:     UKRYJ  
#include <VCLTee.Chart.hpp>
#include <VCLTee.TeEngine.hpp>
#include <VCLTee.TeeProcs.hpp>
#include <VCLTee.Series.hpp>
#include <VCLTee.TeeFunci.hpp>
Po tym powstał error, którego nie mogę przeskoczyć:


[BCC32 Error] matrix.h(326): E2176 Too many types in declaration
Full parser context
Unit5.cpp(7): #include Unit1.h
Unit1.h(27): #include G:\MATLAB\R2010b\extern\include\engine.h
engine.h(45): #include G:\MATLAB\R2010b\extern\include\matrix.h
[BCC32 Error] matrix.h(326): E2146 Need an identifier to declare
Full parser context
Unit5.cpp(7): #include Unit1.h
Unit1.h(27): #include G:\MATLAB\R2010b\extern\include\engine.h
engine.h(45): #include G:\MATLAB\R2010b\extern\include\matrix.h



Zatrzymuje się w pliku matrix.h w linijce otoczonej komentarzami:

/**
* UTF-16 character type
*/
#ifndef __STDC_UTF_16__
# ifndef CHAR16_T
# if defined(_WIN32) && defined(_MSC_VER)
# define CHAR16_T wchar_t
# else
# define CHAR16_T UINT16_T
# endif
# if !defined(_MSC_VER) || _MSC_VER < 1600
typedef CHAR16_T char16_t; <--- TUTAJ SIĘ ZATRZYMUJE
# endif
# endif
#endif



Jak to przeskoczyć? W starej wersji śmiga elegancko, a w nowej wersji tak nie za bardzo.
Avatar użytkownika
oneiro
Homos antropiczny
Homos antropiczny
 
Posty: 96
Dołączył(a): niedziela, 17 czerwca 2012, 23:19
Podziękował : 0
Otrzymał podziękowań: 0
System operacyjny: brak systemu
Kompilator: C++ Builder v6
Gadu Gadu: 0
    Windows XPFirefox

Re: BCB6 -> XE2

Nowy postprzez Cyfrowy Baron » środa, 23 stycznia 2013, 09:22

Nagłówki masz włączone prawidłowo. Co się tyczy zaś tego błędu to występuje on w jakiejś niestandardowej bibliotece, która może być niekompatybilna z XE2. Zobacz jak masz ustawione mapowanie środowiska - opisałem to w tym wątku: http://programowanie.cal.pl/forum/viewtopic.php?f=16&t=1098#p7401. Zmień mapowanie na char i sprawdź.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: BCB6 -> XE2

Nowy postprzez polymorphism » środa, 23 stycznia 2013, 11:28

Wygląda na to, że char16_t jest już gdzieś zdefiniowane. Sprawdź, czy gdzieś wcześniej nie ma (aktywnej) definicji tego typu.
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows XPFirefox

Re: BCB6 -> XE2

Nowy postprzez Cyfrowy Baron » środa, 23 stycznia 2013, 11:34

Tyle, że w starszej wersji środowiska to mu działało, więc czy wcześniej też nie powinno być tego błędu?
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: BCB6 -> XE2

Nowy postprzez polymorphism » środa, 23 stycznia 2013, 12:44

To nie jest błąd, w którym nie wiadomo o co chodzi. Jest jakiś problem na poziomie kompilacji, z definicjami, więc powinien dać się wyeliminować. Jeśli na starszych wersjach działało, to i na nowszej powinno. Obstawiam, że brakuje jakiejś definicji.
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows XPFirefox

Re: BCB6 -> XE2

Nowy postprzez oneiro » środa, 23 stycznia 2013, 23:05

Dziękuję za odpowiedzi, walczę.

Wiele funkcji jest identycznych w nowej wersji, ale nie rozumiem nowych opcji, katalogi się "na samej górze", a później występują także w "C++ Compiler", "Relase", Turbo Assmebler" , przy czym przy każdym jet target (cel)
- all configuration
- relase
- debug

O co tu chodzi?

Wracając do tematu - teoretycznie zmieniłem na char zgodnie z sugestią Barona, ale nie dało to rezultatów, nie mniej mam jeszcze taki warning (był od początku):

Kod: Zaznacz cały
[BCC32 Warning] W8123 Path 'd:\program files\embarcadero\rad studio\9.0\include\vcl' not found - path ignored in option '-I'
[BCC32 Warning] W8123 Path 'd:\program files\embarcadero\rad studio\9.0\include\vcl' not found - path ignored in option '-I'


ale to chyba tylko nie znajduje katalogu (ale poprawna ścieżka do include XE2 podana jest w innej linijce ścieżek - dodam, że takie ścieżki pojawiły się automatycznie po załadowaniu starego projektu do nowej wersji).

Zaczynam obstawiać wersję Polymorphism'a o braku definicji choć, tylko jak to zrobić :) - być może wynika to z powodu braku ścieżek do jakiegoś include?

PS. Czy możecie zaproponować jakąś stronę ukazująca różnice między starymi wersjami a nową (pewno nie ma, bo każdy przechodzi o +1 wersję, a nie +5 wersji do przodu)
Avatar użytkownika
oneiro
Homos antropiczny
Homos antropiczny
 
Posty: 96
Dołączył(a): niedziela, 17 czerwca 2012, 23:19
Podziękował : 0
Otrzymał podziękowań: 0
System operacyjny: brak systemu
Kompilator: C++ Builder v6
Gadu Gadu: 0
    Windows XPFirefox

Re: BCB6 -> XE2

Nowy postprzez polymorphism » środa, 23 stycznia 2013, 23:14

Jak by brakowało nagłówków, to kompilator krzyczałby, że brakuje nagłówków. A tak błąd dotyczy niepoprawnej składni przy typedefie. Poszukaj w całym projekcie wszystkich definicji char16_t, być może tam będziesz miał jakąś informację (np. co zdefiniować preprocesorem). Spróbuj załączyć najpierw matrix.h, a dopiero później całą resztę nagłówków.
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows XPFirefox

Re: BCB6 -> XE2

Nowy postprzez Cyfrowy Baron » czwartek, 24 stycznia 2013, 01:07

oneiro napisał(a):- all configuration
- relase
- debug


all configuration - tyczy się ustawień zarówno dla release jak i debug. Release - kompilacja końcowa dająca gotowy plik, działa podobnie jak bebug, ale trwa dłużej. Degub pozwala debugować program, aczkolwiek to zależy od ustawień, bo jeśli w release ustawisz sobie debugowanie to też. Debug służy do testowania aplikacji, proces kompilacji przebiega szybciej. Niczego w tych opcjach nie musisz zmieniać, jak potrzebujesz innych opcji kompilacji to możesz sobie stworzyć własną definicję. O tym jak przebiega kompilacja ustawiasz sobie tutaj:

pg.png


W zależności od tego jak będziesz miał ustawioną komplikację plik wynikowy pojawi ci się w katalogu ..\Project\Win32\Debug\ lub ..\Project\Win32\Release\



W zależności od tego jak ustawisz sobie mapowanie na wchar_t czy char, niektóre funkcje będą oczekiwały argumentów konkretnego typu, np. przy wchar_t będą oczekiwały wchar_t, a przy char - char.
Największa zmiana tyczy się typu String. W XE2 domyślnym typem jest UnicodeString a nie AnsiString, więc tworząc String tak naprawdę tworzysz UnicodeString. Należy o tym pamiętać uruchamiając stare projekty w nowym środowisku, gdyż jeżeli miałeś zwyczaj pisać String a nie AnsiString to XE2 potraktuje je jako UnicodeString, a tutaj w przypadku konwersji na wchar_t są istotne różnice w stosunku do starszych wersji, co opisałem tutaj: http://programowanie.cal.pl/forum/viewtopic.php?f=16&t=1098#p7401



oneiro napisał(a):nie mniej mam jeszcze taki warning (był od początku):

To tylko ostrzeżenia nie błędy. Przeniosłeś stary projekt do nowego środowiska, w którym ścieżki dostępu do katalogów z bibliotekami są gdzie indziej a w pliku projektu są zapisane w starej lokalizacji. Niemniej jednak jeśli środowisko XE2 zainstalowałeś na dysku D to ten komunikat jest zastanawiający, gdyż podana lokalizacja powinna istnieć tylko, że: d:\program files\embarcadero\rad studio\9.0\include\ bez vcl. Jednak ta 9 w ścieżce wskazuje, że pochodzi ona z nowego środowiska, a nie ze starego, więc musiałeś sam ją dodać. Najlepiej usuną nieistniejące ścieżki: Project -> Options -> C++ Compiler -> Directories and Conditioonals -> Include file search path wywołujesz okno przyciskiem [...] i klikasz w nim na przycisk [ Delete Invalid path ]. tak samo w: Project -> Options -> Directories and Conditioonals -> Include path i w Project -> Options -> Directories and Conditioonals -> Library path. To oczyści projekt ze starych nieistniejących ścieżek.
Nie masz wystarczających uprawnień, aby zobaczyć pliki załączone do tego postu.

Za ten post autor Cyfrowy Baron otrzymał podziękowanie od:
Yari27
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: BCB6 -> XE2

Nowy postprzez andrus » czwartek, 31 stycznia 2013, 09:16

Witam
Mam BCB XE3 (jeszcze gorsze od XE2) i miałem ten sam problem z warningami typu W8123.
Pomaga tylko ingerencja i kasowanie odp. wartości kuczy w rejestrze Windows.
Sam tak zrobiłem na własną odpowiedzialność i mam totalny spokój z W8123.

Chętnie wymienię się spostrzeżeniemi z posiadaczmi BCB XE3, bo mam bardzo wiele "kwiatków" w tym oprogramowniu.
Kiedyś pisałem programy w BCB 3.0, potem 3.1, następnie BCB 5, i dalej BCB 2009, ale żaden z niech nie przebija nawet w paru procentach
BCB XE3 pod względem ilości błędów.

Pozdrawiam
Andrzej
Avatar użytkownika
andrus
Bladawiec
Bladawiec
 
Posty: 9
Dołączył(a): piątek, 7 grudnia 2012, 06:09
Podziękował : 0
Otrzymał podziękowań: 0
System operacyjny: brak systemu
Kompilator: brak kompilatora
Gadu Gadu: 0
    Windows 7Internet Explorer 9

Re: BCB6 -> XE2

Nowy postprzez oneiro » wtorek, 5 lutego 2013, 00:27

dzięki @andrus, ale warningi mi taki nie szkodzą jak brak możliwość skompilowania programu. Na razie odpuściłem sobie przenoszenie programu na nowszy kompilator, urodziło się trochę innych problemów, ale na pewno wrócę do tematu za jakiś czas
Avatar użytkownika
oneiro
Homos antropiczny
Homos antropiczny
 
Posty: 96
Dołączył(a): niedziela, 17 czerwca 2012, 23:19
Podziękował : 0
Otrzymał podziękowań: 0
System operacyjny: brak systemu
Kompilator: C++ Builder v6
Gadu Gadu: 0
    Windows XPFirefox


  • Podobne tematy
    Odpowiedzi
    Wyświetlone
    Ostatni post

Powrót do Ogólne problemy z programowaniem

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 8 gości