c++ builder 10 clang

0

Witam, mam mały problem z projektem z BCB6 na BCB10. Gdy próbuje go kompilować z użyciem kompilatora "clang" pojawia się:

[ilink32 Error] Error: Unresolved external '__InitExceptBlockLDTC' referenced from C:\PROGRAM FILES (X86)\EMBARCADERO\STUDIO\17.0\LIB\WIN32\RELEASE\BCBSMP.LIB|cspin
[ilink32 Error] Error: Unresolved external '__Return_unwind' referenced from C:\PROGRAM FILES (X86)\EMBARCADERO\STUDIO\17.0\LIB\WIN32\RELEASE\BCBSMP.LIB|cspin
[ilink32 Error] Error: Unresolved external '_CatchCleanup()' referenced from C:\PROGRAM FILES (X86)\EMBARCADERO\STUDIO\17.0\LIB\WIN32\RELEASE\BCBSMP.LIB|cspin
[ilink32 Error] Error: Unresolved external '_ReThrowException(unsigned int, unsigned char *)' referenced from C:\PROGRAM FILES (X86)\EMBARCADERO\STUDIO\17.0\LIB\WIN32\RELEASE\BCBSMP.LIB|cspin
[ilink32 Error] Error: Unresolved external '_ThrowExceptionLDTC(void *, void *, void *, void *, unsigned int, unsigned int, unsigned int, unsigned char *, void *)' referenced from C:\PROGRAM FILES (X86)\EMBARCADERO\STUDIO\17.0\LIB\WIN32\RELEASE\BCBSMP.LIB|cgauges

Przy użyciu "classic bcb compilator" nie ma problemu. Czy ktoś wie z czego to może wynikać?

0

C++ Builder ma pewien zbiór rozszerzeń języka C++. więc jeżeli coś pisane pod Buildera - pod każdym innym kompilatorem ma prawo nie kompilować się.

0

Spoko, rozumiem, ale kod był pisany w BCB 6 przeniesiony zgodnie z wytycznymi na BCB 10 i tylko przy użyciu "CLANG" nie chce się kompilować.

0

Wygląda na to, że linker nie widzi odpowiednich libek do komponenty z zakładki Samples (chodzi tu o TSpinEdit oraz TGauges). Wszystkie ścieżki w opcjach projektu są poprawne? Cały projekt jest przeniesiony poprzez import, czy utworzenie nowego i dodanie wszystkich unitów/formatek.

0
lemkat napisał(a):

Spoko, rozumiem, ale kod był pisany w BCB 6 przeniesiony zgodnie z wytycznymi na BCB 10 i tylko przy użyciu "CLANG" nie chce się kompilować.

To nie są błędy kompilacji, ale błędy linkowania! Coś jest źle skonfigurowane w projekcie, nie jest dołączona jakaś biblioteka, albo jakieś źródła (patrząc na nazwy brakujących symboli stawiam na brak w projekcie odpowiednich źródeł).

@_13th_Dragon
Skoro się skompilowało, to wygląda na to, że kod nie używał specjalnych featuerów C++ Builder, które byłyby niezrozumiałe dla clang.

@Mr.YaHooo Gdzie ty widzisz kontrolki Builder w tych błędach? Ja nie widzę ani jednej klasy, tylko brak jakiś funkcji globalnych.

0

@MarekR22 chodzi mi o to:
[ilink32 Error] Error: Unresolved external '__InitExceptBlockLDTC' referenced from C:\PROGRAM FILES (X86)\EMBARCADERO\STUDIO\17.0\LIB\WIN32\RELEASE\BCBSMP.LIB|cspin

Jak dla mnie sugeruje użycie komponentu CSpinEdit oraz brak odpowiednich libek do których linkuje linker.

0

Szukałem komponentu który może to generować, nie udało mi się, poza tym nadal nie wiem czemu kompiluje się na classic bcb a na clang nie chce. Kombinowałem już na 1000 sposobów i nadal lipa, z tym nowym środowiskiem więcej problemów jak ze starym ;(

2

jeszcze raz: to nie są błędy kompilatora!
"Unresolved external" znaczy, że jakiś symbol został zadeklarowany, ale podczas procesu linkowania (ostatnia faza tworzenia pliku wykonalnego) nie można znaleźć jego definicji tego symbolu.
Są dwie główne przyczyny:

  • brak dołączonej do projektu właściwej biblioteki
  • brak dołączonych źródeł do projektu

C++Buildera używałem z 10 lat temu (kiedy wersja 6 byłą jeszcze nowością), ale z tego co pamiętam miała swoje pliki projektu definiujące co ma być użyte do zbudowania aplikacji. Teraz jak zaprzęgłeś do pracy clang to musiałeś dokonać jakieś konwersji pliku projektu do czegoś co będzie zrozumiałe dla menagera builda, którego użyłeś by zaprząc clang do pracy. Może być to make albo cmake albo jeszcze coś innego. To w tej fazie musiałeś popełnić błąd.
Nigdy nie przenosiłem kodu BC++ -> C++ clang, wiec mogę ci pomóc na tyle na ile ujawnisz informacji jak to zrobiłeś (pewnie używając jakiegoś tutoriala z internetu).

0

Wiem czym jest unresolve external, wiem że szuka tych funkcji i ich nie może znaleźć, pytanie brzmi CZEMU ?
Problem jest o tyle dziwny, że na w tym samym środowisku czyli BCB 10 jak mam zaznaczony kompilator jako BCB CLASSIC to nie ma problemu, jak jest CLANG to jest.
Przecież ścieżki do bibliotek powinny być te same.

0

Pogooglałem trochę i jest kilka tematów w internecie i niestety w żadnym z nich nie ma sensownych podpowiedzi. Wygląda to na jakąś niezgodność obj'ów generowanych przez clanga z linkerem. Rozumiem, że przykładowe kody czy nawet większe projekty w clangu się budują poprawnie?

0

Witam, wiem, sam googlowalem sporo i nadal lipa. Inne projekty te pisane od zera w bcb 10 z użyciem clang kompiluja sie poprawnie, co ciekawe jak użyję dynamic rtl to i ten projekt kompiluje sie poprawnie ale nic mi to nie daje.

Staram sie cos wyciagnac od sprzedawcy.

0

Ja niestety nie mam nawet więcej problemów. Może ktoś coś wynajdzie.

Ewentualnie mógłbyś stworzyć projekt od nowa w Builderze 10, następnie dodać wszystkie pliki i zobaczyć czy będzie tak samo.

0

I w tym właśnie problem ze tak zrobilem i nadal lipa.

0

W takim razie nie mam już pomysłów wcale.

0

Jeżeli ni kompiluje się w Builderze to znaczy masz skopane jedno z dwóch:

  1. Instalacje Buildera
  2. Projekt który próbujesz skompilować.
0
_13th_Dragon napisał(a):

Jeżeli ni kompiluje się w Builderze to znaczy masz skopane jedno z dwóch:

  1. Instalacje Buildera

Robiłem refresh instalki buildera

_13th_Dragon napisał(a):

Jeżeli ni kompiluje się w Builderze to znaczy masz skopane jedno z dwóch:
2. Projekt który próbujesz skompilować.

no to jest jasne ale co w nim sie skopało, kompiluje się w tym samym środowisku z użyciem kompilatora classic ale już z clang nie

Zamieściłem wpis na embarcadero i wygląda na to że jest to jednak bug w środowisku bo nie ja jedne mam ten problem, nawet już potrafią go zasymulować. Niestety support ma mnie przysłowiowo w D... jak kupowałem środowisko to odpowiedzi prawie natychmiast a teraz totalna cisza...

0

jak masz jakieś własne kontrolki to czy one są zkompilowane w Clang ?

0

Nie mam wlasnych komponentow :(

1 użytkowników online, w tym zalogowanych: 0, gości: 1