VTK-Projekt meldet „undefinierte Referenz“-FehlerC++

Programme in C++. Entwicklerforum
Guest
 VTK-Projekt meldet „undefinierte Referenz“-Fehler

Post by Guest »

Ich möchte eine einfache VTK8.1.2-Demo auf Centos7.9-2009 ausführen, um das VTK-Paket für mein Projekt zu testen. Hier ist die Demo:

Code: Select all

#include 
#include 
#include 
#include 
#include 
#include 
#include 

int main() {
auto sphereSource = vtkSmartPointer::New();
sphereSource->SetRadius(5.0);

auto mapper = vtkSmartPointer::New();
mapper->SetInputConnection(sphereSource->GetOutputPort());

auto actor = vtkSmartPointer::New();
actor->SetMapper(mapper);

auto renderer = vtkSmartPointer::New();
renderer->AddActor(actor);
renderer->SetBackground(0.1, 0.2, 0.4);

auto renderWindow = vtkSmartPointer::New();
renderWindow->AddRenderer(renderer);

auto interactor = vtkSmartPointer::New();
interactor->SetRenderWindow(renderWindow);

renderWindow->Render();
interactor->Start();

return 0;
}
Hier sind die CMakeLists:

Code: Select all

cmake_minimum_required(VERSION 3.22)
project(test)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -gdwarf-4")

find_package(VTK REQUIRED PATHS)

add_executable(test main.cpp)

target_link_libraries(test PRIVATE ${VTK_LIBRARIES})
target_include_directories(test PRIVATE ${VTK_INCLUDE_DIRS})
Als ich das VTK-Paket mit dem Standard-GCC4.8.5 erstellt habe. Die Demo lief reibungslos.

Code: Select all

cmake .. -DCMAKE_BUILD_TYPE=Release
Aber als ich versuchte, das VTK-Paket mit GCC11.2 zu kompilieren. Das Programm hat beim Erstellen viele „undefinierte Referenz“-Fehler gemeldet.

Code: Select all

cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_COMPILER=/usr/local/gcc11.2/bin/gcc -DCMAKE_CXX_COMPILER=/usr/local/gcc11.2/bin/g++
Die gesamte Nachricht umfasst mehr als 4000 Zeilen, aber alle sind ziemlich gleich („xxx.so.1: undefinierter Verweis auf xxx“), also füge ich hier einfach einen Teil davon ein:

Code: Select all

CMakeFiles/test.dir/main.cpp.o:main.cpp:(.text.unlikely+0x38): more
undefined references to
`vtkSmartPointerBase::~vtkSmartPointerBase()' follow
/home/Code/VTK/VTK-8.1.2/installation/include/vtk-8.1/vtkSmartPointer.h:155: undefined reference to
`vtkSphereSource::New()'
/home/Code/VTK/VTK-8.1.2/installation/include/vtk-8.1/vtkSmartPointer.h:207: undefined reference to
`vtkSmartPointerBase::vtkSmartPointerBase(vtkObjectBase*, vtkSmartPointerBase::NoReference const&)'
/home/Code/VTK/VTK-8.1.2/installation/include/vtk-8.1/vtkSmartPointer.h:155: undefined reference to
`vtkPolyDataMapper::New()'
/home/Code/VTK/VTK-8.1.2/installation/include/vtk-8.1/vtkSmartPointer.h:207: undefined reference to
`vtkSmartPointerBase::vtkSmartPointerBase(vtkObjectBase*, vtkSmartPointerBase::NoReference const&)'
/home/Code/VTK/VTK-8.1.2/installation/include/vtk-8.1/vtkAlgorithm.h:455: undefined reference to
`vtkAlgorithm::GetOutputPort(int)'
/home/Code/VTK/VTK-8.1.2/installation/include/vtk-8.1/vtkSmartPointer.h:155: undefined reference to
`vtkActor::New()'
Die einzige Änderung ist die Verwendung von GCC11.2 zur Erstellung von VTK anstelle von 4.8.5.
Ich habe den Umgebungspfad und die Einstellungen der Clion-Toolchain überprüft. Ich bin mir sicher, dass es dasselbe GCC11.2 ist, das ich für die Erstellung von VTK verwendet habe.
Mein Projekt erfordert GCC11.2, daher kann ich nicht zu 4.8.5 zurückkehren. Kann mir bitte jemand helfen?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post