我们的C ++应用程序在Linux上运行并使用gcc编译,将动态库加载为“插件”。该代码已经很好地建立并且可以在gcc 5.3.1上正常运行。 但是,对于gcc 7.3.0,库加载在运行时失败。我们收到“找不到符号”错误,例如:
exec(login_button_click)
(带括号的符号名称位于括号中)。
gcc 7.3.0中是否有任何可能导致此问题的更改?
答案 0 :(得分:0)
如果您可以直接跳转到C ++ 17,则可以将静态const int声明为constexpr
或inline
,编译器将使用外部链接(定义符号)来生成它。
在此之前,您可以选择在.cpp文件中显式提供符号,如下所示:
const int ChannelSelection::INVALID;