首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ubuntu 20.04 Ubuntu nana库的链接问题

Ubuntu 20.04 Ubuntu nana库的链接问题
EN

Stack Overflow用户
提问于 2021-08-17 08:23:22
回答 1查看 187关注 0票数 3

我在Windows上的应用程序中使用娜娜图书馆已经有一段时间了,它工作得很好。现在,我正在尝试进行Linux构建,但我似乎无法正确地将nana链接到我的应用程序。

我试过,但它似乎也不起作用

我举了一个小例子来说明这个问题。这是我的main.cpp

代码语言:javascript
复制
#include <nana/gui/filebox.hpp>
#include <iostream>

int main()
{
    nana::filebox picker{nullptr, true};

    auto paths = picker.show();
    if(paths.empty())
    {
        std::cout<<"Cancelled"<<std::endl;
    }
    else
    {
        for(auto & p : paths)
            std::cout << "Selected file:" << p << std::endl;
    }

}

我的CMakeList看起来是这样的:

代码语言:javascript
复制
cmake_minimum_required(VERSION 3.0.0)
project(NanaTest VERSION 0.1.0)

include(CTest)
enable_testing()

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++17 -Wall")
#set(CMAKE_LINK_WHAT_YOU_USE TRUE)

add_executable(NanaTest main.cpp)

target_include_directories(NanaTest PRIVATE
    usr/local/include/nana)

find_library(NANALIB NAMES libnana.a  REQUIRED PATHS usr/local/lib/)

if(NOT NANALIB)
    message([FATAL_ERROR] "NANALIB not found")
endif()

target_link_libraries(NanaTest ${NANALIB})
#target_link_libraries(${PROJECT_NAME} -lnana)
target_link_libraries(${PROJECT_NAME} -lX11)
target_link_libraries(${PROJECT_NAME} -lXcursor)
target_link_libraries(${PROJECT_NAME} -lpthread )
target_link_libraries(${PROJECT_NAME} -lXft )
target_link_libraries(${PROJECT_NAME} -lfontconfig )

set(CPACK_PROJECT_NAME ${PROJECT_NAME})
set(CPACK_PROJECT_VERSION ${PROJECT_VERSION})
include(CPack)

我跑步的时候这似乎很管用。但是,当我将它复制到另一个VM时,它不起作用。而且,ldd结果似乎不包含共享对象libnana.so。当我在另一个VM上运行它时,我会得到分段错误,当我在gdb上运行它时,这就是我得到的错误:

代码语言:javascript
复制
Program received signal SIGSEGV, Segmentation fault.
0x0000555555b80a21 in nana::detail::platform_spec::platform_spec() ()

当我取消评论set(CMAKE_LINK_WHAT_YOU_USE TRUE) and target_link_libraries(${PROJECT_NAME} -lnana)

我可以在ldd结果中看到libnana.so,但是这一次当应用程序结束时,我会得到一个double free or corruption (!prev) Aborted (core dumped)错误。有人知道问题可能是什么吗。我在用GCC 9.3.0。提前谢谢你。顺便说一下,我正在使用nana-hotfix-1.7.4,但是我尝试了1.7.1、1.7.2和1.7.3,它们都有相同的问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-18 01:28:12

下面是一个实际工作的构建:

代码语言:javascript
复制
cmake_minimum_required(VERSION 3.21)
project(NanaTest VERSION 0.1.0)

include(FetchContent)
FetchContent_Declare(
  nana
  GIT_REPOSITORY https://github.com/cnjinhao/nana.git
  GIT_TAG        v1.7.4
  GIT_SHALLOW    TRUE
)

FetchContent_MakeAvailable(nana)

add_executable(NanaTest main.cpp)
target_link_libraries(NanaTest PRIVATE nana)

nana开发人员希望您在构建中包含他们的源代码。最简单的方法是通过FetchContent

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68813991

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档