dlsym

    1熱度

    2回答

    考慮我有一個動態的外部庫libExternal.dylib以下功能的外部庫函數: void print(char* str) { // Changes the first char to 'a' and prints the string *str = 'a'; printf("%s\n", str); } 接下來,我有一個加載這個外部庫和調用可執行(檢查省略

    1熱度

    1回答

    Overriding 'malloc' using the LD_PRELOAD mechanism 如何LD_PRELOAD用於設置ptr爲NULL或任何其他的存儲器地址,以避免懸掛指針漏洞。 void free(void *ptr) { real_free(ptr); ptr = NULL // will only set local ptr to NULL }

    0熱度

    1回答

    我在C++中遇到了一些小問題。 所以,我有一個遊戲,一種蛇的,我想用三個不同的圖形庫來做。 (如libsdl.so,libndk.so和libQt.so)。 我有以下類別: DisplaySDL.hh: #ifndef DISPLAYSDL_HH__ # define DISPLAYSDL_HH__ #include "IDisplay.hh" class DisplaySdl : pu

    3熱度

    3回答

    當我嘗試編譯我的單元測試文件時,我得到'未定義對`dlsym'的引用錯誤。 我在Unix系統上(我在Ubuntu 12.04上)添加了-ldl到編譯器工程,但我試圖使用Zed的Shaw Makefile,但仍然沒有發生任何事情。這是代碼: CFLAGS=-g -O2 -Wall -Wextra -Isrc -rdynamic -DNDEBUG $(OPTFLAGS) LIBS=-ldl $(OP

    1熱度

    2回答

    我想從我的共享庫(.so)訪問類符號 這是我需要的正確方法。 MyClass* pMyClass= (MyClass*)dlsym(phandle, "MyClass"); 如果這是正確的方法,那麼我應該有我的MyClass標題用於投射。 我想知道是否有任何其他方式可以做到這一點,而不包括標題? 感謝

    4熱度

    2回答

    我想攔截應用程序對dlsym的調用,我已經嘗試在.so中聲明我正在預加載dlsym,並使用dlsym本身來獲取它的真實地址,但是由於相當明顯的原因,這種行爲並不起作用。 有沒有一種方法比採取進程的內存映射更容易,並且使用libelf來查找加載的libdl.so中dlsym的真實位置?

    0熱度

    1回答

    libdvm.so裏面的Android2.3,我可以使用代碼來調用dexFileParse 代碼: void * handle = dlopen(「/ system/lib/libdvm.so」,RTDL_LAZY); void * pFunc = dlsym(handle,「dexFileParse」); 但libdvm.so出口_Z16dexFileParseXXX,我不會從 的dlsym(手

    2熱度

    1回答

    我有一個奇怪的問題。當我使用共享庫的參數調用導入的方法時,在這些方法中我有錯誤的參數。它是這樣的: x = 1; y = 2; z = 3; (*method)(x,y,z); 在方法,我有: void method(int x, int y, int z){ // x = 2, y = 3, z = 32432423 - something like this } 這裏我怎

    1熱度

    2回答

    我必須調用外部庫中的函數,其參數的類型和數量以及返回類型是未知的。我如何使用dlsym在C++中調用該函數? 編輯:我如何調用函數使用dlsym(),如果我得到返回類型和數據類型的參數作爲字符串。 例如:客戶端將func名稱,返回類型和參數數據類型發送到服務器。服務器使用dlopen()動態加載對應的。現在我怎樣才能使用dlsym調用func? 在此先感謝

    4熱度

    2回答

    如果庫定義了同一個符號的多個版本,dlsym(RTLD_NEXT, "symbol")即使舊符號不是默認符號,也會返回舊符號。 例如,定義的libpthread的調用pthread_cond_broadcast兩個版本: $:> nm -g /lib64/libpthread-2.15.so|grep pthread_cond_broadcast 000000000000bfc0 T [emai