Witam,
Słowem wstępu, chcę przekompilować mój stary projekt grupowy na platformę 64-bit Windows, składający się m.in. z kilku bibliotek BPL, który wcześniej był skompilowany na platformie 32-bit Windows i działał sprawnie. W jednej z bibliotek wykorzystuję klasy operujące na komponentach TChart. Zawarte w niej klasy i metody operujące na obiektach typu TChart są uniwersalne i korzystam z nich w różnych projektach, dlatego zawarłem je w osobnej bibliotece BPL.
Doszedłem do tego, że podczas linkowania biblioteki BPL, w której zawarte są pliki z definicjami klas operującymi na komponentach TChart, a w plikach nagłówkowych jest odwołanie do biblioteki TChart, czyli #include <VCLTee.Chart.hpp>, pojawia się błąd linkera.
Aby uprościć analizę zbudowałem pusty projekt grupowy, który zawiera tylko jedną bibliotekę BPL i projekt EXE z typową formatką VCL. W testowej bibliotece BPL mieści się tylko jeden plik Unit z linkiem #include <VCLTee.Chart.hpp> zamieszczonym w pliku nagłówkowym. Nie ma żadnej definicji klasy ani innego kodu, jak pokazano niżej:
- Kod: Zaznacz cały
//---------------------------------------------------------------------------
#ifndef TestUnit64bitH
#define TestUnit64bitH
//---------------------------------------------------------------------------
#include <VCLTee.Chart.hpp>
//---------------------------------------------------------------------------
//..
//---------------------------------------------------------------------------
#endif
Lokalny build (Alt+F9) tego pliku, kończy się sukcesem. Natomiast build całego projektu z biblioteką BPL, kończy się błędem i pojawiają się następujące błędy linkera:
[ilink64 Error] Error: Unresolved external 'System::Generics::Collections::TList__1<Vcltee::Teengine::TChartAxis*>::TList__1()' referenced from C:\USERS\...\DOCUMENTS\EMBARCADERO\STUDIO\TESTS\TESTAPP64BIT\WIN64\DEBUG\TESTUNIT64BIT.O [ilink64 Error] Error: Unresolved external 'System::Generics::Collections::TList__1<Vcltee::Teengine::TChartAxis*>::TList__1(System::DelphiInterface<System::Generics::Defaults::IComparer__1<Vcltee::Teengine::TChartAxis*> >)' referenced from C:\USERS\...\DOCUMENTS\EMBARCADERO\STUDIO\TESTS\TESTAPP64BIT\WIN64\DEBUG\TESTUNIT64BIT.O [ilink64 Error] Error: Unresolved external 'System::Generics::Collections::TList__1<Vcltee::Teengine::TChartAxis*>::TList__1(System::Generics::Collections::TEnumerable__1<Vcltee::Teengine::TChartAxis*>*)' referenced from C:\USERS\...\DOCUMENTS\EMBARCADERO\STUDIO\TESTS\TESTAPP64BIT\WIN64\DEBUG\TESTUNIT64BIT.O [ilink64 Error] Error: Unresolved external 'System::Generics::Collections::TList__1<Vcltee::Teengine::TSeriesMarkPosition*>::TList__1()' referenced from C:\USERS\...\DOCUMENTS\EMBARCADERO\STUDIO\TESTS\TESTAPP64BIT\WIN64\DEBUG\TESTUNIT64BIT.O [ilink64 Error] Error: Unresolved external 'System::Generics::Collections::TList__1<Vcltee::Teengine::TSeriesMarkPosition*>::TList__1(System::DelphiInterface<System::Generics::Defaults::IComparer__1<Vcltee::Teengine::TSeriesMarkPosition*> >)' referenced from C:\USERS\...\DOCUMENTS\EMBARCADERO\STUDIO\TESTS\TESTAPP64BIT\WIN64\DEBUG\TESTUNIT64BIT.O [ilink64 Error] Error: Unresolved external 'System::Generics::Collections::TList__1<Vcltee::Teengine::TSeriesMarkPosition*>::TList__1(System::Generics::Collections::TEnumerable__1<Vcltee::Teengine::TSeriesMarkPosition*>*)' referenced from C:\USERS\...\DOCUMENTS\EMBARCADERO\STUDIO\TESTS\TESTAPP64BIT\WIN64\DEBUG\TESTUNIT64BIT.O [ilink64 Error] Error: Unresolved external 'System::Generics::Collections::TList__1<Vcltee::Teengine::TMarksItem*>::TList__1()' referenced from C:\USERS\...\DOCUMENTS\EMBARCADERO\STUDIO\TESTS\TESTAPP64BIT\WIN64\DEBUG\TESTUNIT64BIT.O [ilink64 Error] Error: Unresolved external 'System::Generics::Collections::TList__1<Vcltee::Teengine::TMarksItem*>::TList__1(System::DelphiInterface<System::Generics::Defaults::IComparer__1<Vcltee::Teengine::TMarksItem*> >)' referenced from C:\USERS\...\DOCUMENTS\EMBARCADERO\STUDIO\TESTS\TESTAPP64BIT\WIN64\DEBUG\TESTUNIT64BIT.O [ilink64 Error] Error: Unresolved external 'System::Generics::Collections::TList__1<Vcltee::Teengine::TMarksItem*>::TList__1(System::Generics::Collections::TEnumerable__1<Vcltee::Teengine::TMarksItem*>*)' referenced from C:\USERS\...\DOCUMENTS\EMBARCADERO\STUDIO\TESTS\TESTAPP64BIT\WIN64\DEBUG\TESTUNIT64BIT.O [ilink64 Error] Error: Unresolved external 'System::Generics::Collections::TList__1<Vcltee::Teengine::TChartValueList*>::TList__1()' referenced from C:\USERS\...\DOCUMENTS\EMBARCADERO\STUDIO\TESTS\TESTAPP64BIT\WIN64\DEBUG\TESTUNIT64BIT.O [ilink64 Error] Error: Unresolved external 'System::Generics::Collections::TList__1<Vcltee::Teengine::TChartValueList*>::TList__1(System::DelphiInterface<System::Generics::Defaults::IComparer__1<Vcltee::Teengine::TChartValueList*> >)' referenced from C:\USERS\...\DOCUMENTS\EMBARCADERO\STUDIO\TESTS\TESTAPP64BIT\WIN64\DEBUG\TESTUNIT64BIT.O [ilink64 Error] Error: Unresolved external 'System::Generics::Collections::TList__1<Vcltee::Teengine::TChartValueList*>::TList__1(System::Generics::Collections::TEnumerable__1<Vcltee::Teengine::TChartValueList*>*)' referenced from C:\USERS\...\DOCUMENTS\EMBARCADERO\STUDIO\TESTS\TESTAPP64BIT\WIN64\DEBUG\TESTUNIT64BIT.O [ilink64 Error] Error: Unresolved external 'System::Generics::Collections::TList__1<Vcltee::Tecanvas::TVisualBlock*>::TList__1()' referenced from C:\USERS\...\DOCUMENTS\EMBARCADERO\STUDIO\TESTS\TESTAPP64BIT\WIN64\DEBUG\TESTUNIT64BIT.O [ilink64 Error] Error: Unresolved external 'System::Generics::Collections::TList__1<Vcltee::Tecanvas::TVisualBlock*>::TList__1(System::DelphiInterface<System::Generics::Defaults::IComparer__1<Vcltee::Tecanvas::TVisualBlock*> >)' referenced from C:\USERS\...\DOCUMENTS\EMBARCADERO\STUDIO\TESTS\TESTAPP64BIT\WIN64\DEBUG\TESTUNIT64BIT.O [ilink64 Error] Error: Unresolved external 'System::Generics::Collections::TList__1<Vcltee::Tecanvas::TVisualBlock*>::TList__1(System::Generics::Collections::TEnumerable__1<Vcltee::Tecanvas::TVisualBlock*>*)' referenced from C:\USERS\...\DOCUMENTS\EMBARCADERO\STUDIO\TESTS\TESTAPP64BIT\WIN64\DEBUG\TESTUNIT64BIT.O |
Ewidentnie jest to błąd związany z linkowaniem składowych komponentu TChart w tworzonej bibliotece BPL na platformie 64-bit Windows.
Czy ktoś spotkał się z takim problemem i jak go obejść?
Pozdrawiam
Yaroda