簡體   English   中英

在gcc 7.3.0中找不到動態庫符號

[英]Dynamic library symbols not found with gcc 7.3.0

我們的C ++應用程序在Linux上運行並使用gcc進行了編譯,可將動態庫加載為“插件”。 該代碼已經很好地建立並且可以在gcc 5.3.1上正常運行。 但是,對於gcc 7.3.0,庫加載在運行時失敗。 我們收到“找不到符號”錯誤,例如:

Failed to load <snip>/solibs/_gnuRelease/libLink.so
dlerror = <snip>: undefined symbol: _ZN24ChannelSelection7INVALIDE ( ChannelSelection::INVALID )
Failed to load <snip>/solibs/_gnuRelease/libBitTrue.so
dlerror = <snip>: undefined symbol: _ZTIN8StarLibs7LinkSim8StarFPGAE ( typeinfo for StarLibs::LinkSim::StarFPGA )

(帶括號的符號名稱在括號中)。

gcc 7.3.0中是否有任何更改可能導致此問題?

如果可以直接跳轉到C ++ 17,則可以將靜態const ints聲明為constexprinline ,編譯器將使用外部鏈接(定義符號)來生成它。

在此之前,您可以選擇在.cpp文件中顯式提供符號,如下所示:

const int ChannelSelection::INVALID;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM