在实现OpenSceneGraph时在Qt中获取引用问题

问题描述 投票:0回答:1

我收到错误(**

**> CMakeFiles \ untitled3.dir / objects.a(main.cpp.obj):main.cpp :(。text + 0x46):

未定义的引用`_imp ___ ZN9osgViewer6ViewerC1Ev'**)

在Qt中添加OpenSceneGraph。我的个人资料是cmakelist.txt。

cmake_minimum_required(VERSION 2.8.12)

project(untitled3)

set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_AUTOMOC ON)

find_package(Qt5Core)
FIND_PATH(OPENSCENEGRAPH_INCLUDE_DIR osg/Referenced
    PATHS
    $ENV{OSG_ROOT}/include
    $ENV{OSG_DIR}/include
    /usr/include
    /usr/local/include
)

FIND_PATH(OPENSCENEGRAPH_LIB_DIR libosg.so osg.lib
    PATHS
    $ENV{OSG_ROOT}/lib
    $ENV{OSG_DIR}/lib
    /usr/lib
    /usr/local/lib
)

INCLUDE_DIRECTORIES(common ${OPENSCENEGRAPH_INCLUDE_DIR})
LINK_DIRECTORIES(${OPENSCENEGRAPH_LIB_DIR})

add_executable(${PROJECT_NAME} "main.cpp")

target_link_libraries(${PROJECT_NAME} Qt5::Core)

我的main.cpp文件是

#include <QCoreApplication>
#include <osgViewer/Viewer>

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    osgViewer::Viewer viewer;
//       viewer.setSceneData( osgDB::readNodeFile("cessna.osg") );
//       return viewer.run();
    return a.exec();
}

任何可以提供帮助的人。我邀请他们挺身而出。

c++ qt openscenegraph
1个回答
1
投票

您的cmake文件存在问题。你需要确保:

  1. 找到必要的OSG包(在您的情况下为osgViewer)。
  2. 将可执行文件链接到目标OSG库。

就像你为QtCore做的那样:

find_package(Qt5Core)
find_package(OpenSceneGraph REQUIRED COMPONENTS osgViewer)
# ...
target_link_libraries(${PROJECT_NAME} Qt5::Core  ${OPENSCENEGRAPH_LIBRARIES} )
© www.soinside.com 2019 - 2024. All rights reserved.