dlsym

    -1熱度

    1回答

    我想在C(在Linux上)鏈接到一個共享庫 我想壓制或處理的: 「錯誤而載入共享庫:libxxxx.so:無法打開共享對象文件:沒有這樣的文件或目錄」 ,並繼續加載鏈接到下一個可能的解決仍未解決的符號庫。 我想應該用gcc/LD/dlsym進行選擇,但不能設法瞭解... 沒有人有線索?

    1熱度

    1回答

    我試着用 extern void __NSAutoreleaseNoPool(void* obj); 但鏈接時(不知道它需要什麼框架,雖然)導致一個未解決的符號。 我也試過 dlsym(RTLD_DEFAULT, "__NSAutoreleaseNoPool") ,但只是給是NULL。 我試着用_dyld_lookup_and_bind和NSLookupSymbolInImage但他們也不

    1熱度

    1回答

    已經解決!See the result here。 不知道我是否在正確的地方問,但有沒有人知道基於.h文件生成dlopen和dlsym命令的正確方法? 我想動態加載SDL2 - 這是一個用C編寫的庫 - 但所有提取函數列表和他們的參數與ctags的方法似乎沒有結果(必須手動更正240個函數的參數列表3500是不好玩)。 ctags -R -x --sort=yes --c++-kinds=+p -

    1熱度

    1回答

    dlsym()的man page名單 *(void **) (&cosine) = dlsym(handle, "cos"); 作爲用於鑄造的dlsym()返回值一種解決方法。 *(void **) (&cosine)這是什麼意思?據我所知cosine是一個先前定義的函數指針,但我不知道爲什麼在名稱前需要使用&符號&(錯誤沒有&)。此外,我不知道爲什麼指針void *(void **)再次與*

    1熱度

    2回答

    我需要從使用C++的Solaris 10上的當前可執行文件中知道函數地址(我正在使用GNU g ++ 4.9.2)。例如,我有一個函數說:void doSomething(const char * p),它可能會或可能不會在當前的可執行文件中定義。所以,我想搜索當前可執行文件中的函數(如果存在),然後調用該函數執行一些默認操作。我怎麼做? dlsym會幫忙嗎? 請幫助我的語法和損壞的名稱。

    4熱度

    1回答

    很容易找到使用 dlsym()和這個系列的其他功能,但如何在內部工作?是否有可能編寫自己的,簡單的dlsym()實現? 我想知道是否可以實現類似的行爲,但不與連接-ldl(可以說,我不能這樣做)。

    0熱度

    1回答

    我找不到任何使用dlsym加載Objc方法符號的聯機示例。 雖然我可以上課,但使用類似 dlsym(handler, "OBJC_CLASS_$_CLLocationManager") 但我不知道如何獲得方法符號。

    2熱度

    3回答

    的情況下,我創建一個使用dlsysm(剪切對象開放),但我收到以下錯誤: error: invalid conversion from "void*" to "void (*)()" 這裏是我的代碼: #include<iostream> #include<dlfcn.h> using namespace std; int main() { void (*fnptr)();

    1熱度

    1回答

    我有幾個從構建系統中吐出的目標文件(來自C++)。他們有幾個extern "C"-我想在程序中使用的鏈接符號,並且可以通過其他地方的dlopen/dlsym訪問。 當使用gcc編譯爲可執行文件時,這些符號未使用nm -D <executable-here>(即afaik它們不是動態符號)列出。 如何讓它們在編譯後的可執行文件中顯示爲動態符號? 我可以改變目標文件和可執行文件的構建標誌,但是改變C+

    0熱度

    1回答

    如何找到函數open()所在的庫?像,包含該功能的實際「xxxxxx.so」文件的名稱?另外,有沒有一個地方可以爲其他功能獲取這些信息?