我有一個使用共享庫的可執行項目,其中包含一個靜態庫。然後從可執行文件中,我嘗試使用dlopen
加載另一個共享庫。該庫已找到,但無法從靜態庫中找到符號。linux dlopen無法找到靜態庫的符號
下面是結構:
-- SHARED LIB 1
-- (compiled with) Static Lib 1
-- EXECUTABLE
-- SHARED LIB 1
-- dlopen SHARED LIB 2 XX ERROR: SHARED LIB 2 cannot find symbols of Static Lib 1
兩個SHARED LIB 1
和SHARED LIB 2
從/usr/lib
相連。
看來我錯過了一些標誌。
我該如何解決這個問題?
你的第二個共享庫需要加載你的靜態庫共享庫,或作爲靜態庫與它編譯。這會使靜態的好處變得不利。 – Davislor
你必須聲明符號'extern「C」'(或者你必須使用它們的重名)。你在做那個嗎? – Galik