Код: Выделить всё
#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;
}
Код: Выделить всё
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})
Код: Выделить всё
cmake .. -DCMAKE_BUILD_TYPE=Release

Но когда я попытался скомпилировать пакет VTK с помощью GCC11.2. Программа сообщала о множестве ошибок «неопределенной ссылки» при сборке.
Код: Выделить всё
cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_COMPILER=/usr/local/gcc11.2/bin/gcc -DCMAKE_C_COMPILER=/usr/local/gcc11.2/bin/g++

Единственное изменение — использование GCC11.2 для создания VTK вместо 4.8.5.
Я новичок в проекте C++. Я не знаю, где я сделал ошибку, поэтому спросил ChatGPT. ChatGPT сказал мне, что это проблема со связью, возможно, потому, что программа была скомпилирована с другой версией GCC. Затем я проверил PATH среды и настройки цепочки инструментов Clion. Я уверен, что это тот же GCC11.2, который я использовал для создания VTK.
Мой проект требует GCC11.2, поэтому я могу' Я не вернусь к использованию 4.8.5. На данный момент я не знаю, что еще я могу сделать, чтобы решить эту проблему. Может кто-нибудь мне помочь, пожалуйста?
Подробнее здесь: https://stackoverflow.com/questions/792 ... nce-errors