referência indefinida para 'dlopen' apesar de CMAKE_DL_LIBS

1

Estou tentando instalar as ferramentas para o gameplay3d. Depois de seguir as instruções de instalação do cmake , recebo este erro:

Linking CXX executable gameplay-encoder
/usr/lib/gcc4/x64/release/libfbxsdk.so: undefined reference to 'dlopen'
/usr/lib/gcc4/x64/release/libfbxsdk.so: undefined reference to 'dlclose'
/usr/lib/gcc4/x64/release/libfbxsdk.so: undefined reference to 'dlsym'

O arquivo CMakeLists.txt é fornecido com essas definições (observe -ldl e ${CMAKE_DL_LIBS} , o que pareceu resolver o problema para outras pessoas em encadeamentos relacionados):

add_definitions(-lstdc++ -ldl -lfbxsdk -lpng -lz -lfreetype -lpthread)
...
target_link_libraries(
    ${APP_NAME}
    ${APP_LIBRARIES}
    ${CMAKE_DL_LIBS}
)

Obrigado pela ajuda!

    
por wrongu 23.03.2014 / 19:46

1 resposta

1

Como escrevi em um comentário:
Acabei de ter o mesmo problema em um Ubuntu 13.10 64bit. Não tenho certeza se a causa do nosso problema é a mesma versão do Ubuntu, já que resolvi da seguinte forma:

Eu usei uma versão auto-compilada da biblioteca Pluma . Sempre que eu tentei compilar meu projeto próprio que usava aquele lib de Pluma, recebi o erro que você mencionou acima. Eu tentei adicionar ${CMAKE_DL_LIBS} como você, mas não tive sucesso.

O motivo foi que eu tive que ligar manualmente o Pluma com libdl no início (adicionar -ldl ). Depois disso, eu poderia usar libPluma.so sem problemas. Não tenho certeza, porque o Pluma compilado sem -ldl , mas eu só posso imaginar que é algo com o linker não está funcionando corretamente.

Então, para resumir (e responder à sua pergunta atual):
Você precisa vincular libfbxsdk.so a -ldl , não ajuda apenas vincular gameplay-encoder a ele.

    
por MOnsDaR 01.05.2014 / 17:24