dlopen

    0熱度

    1回答

    我有dlopen的我做的,使用另一個。所以libary 我的程序一個.so庫的程序(即在運行時dlopen的使用libctp.so) libctp.so(即我做了) thostmduserapi.so(其他人所做的,libctp.so使用它) 但它運行時,它顯示了這個錯誤: symbol lookup error: ./libctp.so: undefined symbol: _ZN15CThos

    4熱度

    1回答

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

    2熱度

    4回答

    dlopen()在API-23中工作正常,但對於Android-N,當我試圖用dlopen打開任何軟件時,它返回一個soinfo結構類型指針。但是當我試圖訪問這個結構的任何變量時,應用程序就會崩潰。 si = (soinfo*) dlopen("/data/app/com.xxx.xxx.sampleapp.android-1/lib/x86/libtest.so", RTLD_GLOBAL);

    5熱度

    1回答

    在主程序中,我爲dlopen和dlclose(分別爲LoadLibrary和FreeLibrary)共享庫。共享庫包含一個靜態變量,該變量在dlopen上實例化,並在dlclose時銷燬。此行爲在MSVC 2008和2013,GCC 3.4.6和Sunstudio 12.1上一致。 但是,GCC 4.9.1和GCC 5.2.1不再在dlclose上調用析構函數。而是在程序退出之前調用它。 靜態變量

    0熱度

    1回答

    我需要在我的代碼中使用kIOSurfaceWidth來捕獲屏幕截圖,但對於Apple已從iOS 9.3中刪除PrivateFrameworks,因此我必須在運行時動態加載IOSurface.frameworks。我使用下面的代碼,但在dlsym後返回不爲空,但是當我嘗試NSLog的值kIOSurfaceWidth時,它崩潰。任何人都可以給我一些幫助嗎? static CFStringRef _kI

    -3熱度

    2回答

    我已通過多個堆棧溢出職位消失,試圖執行下面的例子與C++對象類 我具有以下的代碼使用的dlopen類對象。 1)文件hello.cc #include <stdio.h> #include "hello.h" A::A() { init1(); } void A::init1() { printf("\n init "); } 2)文件hello.h #inclu

    3熱度

    1回答

    當你使用共享對象時,是否有一種機制讓該DLL中的代碼執行而不被顯式調用?具體而言,調用者dlopen()可能不知道的全局/靜態C++靜態初始化代碼?我很確定答案應該是「是」,但我不記得是什麼機制使這種情況發生,以及如何利用它來運行任意代碼。

    0熱度

    2回答

    我有一個編譯爲.so文件(使用g ++ 5編譯)的C++項目。 在另一個項目中(在相同的解決方案下),我有一個鏈接到這個項目的測試(CMake的命令target_link_libraries(...))。 我編譯項目,並複製輸出.so文件,讓可以說「/tmp/proj.so」。 除了將測試鏈接到項目外,我還使用dlopen動態加載「/tmp/proj.so」,該函數具有全局函數create_foo

    2熱度

    1回答

    我希望能夠將共享庫的多個副本加載到相同的地址空間。我希望他們不要共享任何全局變量,並且我希望這兩個副本不知道另一個已加載。 用例是一個線程安全庫的並行執行。 我怎樣才能做到這一點 在Linux上 ? 在OS X上? 在Windows上? on * BSD? 在其他類Unix系統上?

    1熱度

    2回答

    幾年前,我聽說Google有一個修補程序,用於將存儲在另一個文件中的共享對象存儲在非零偏移量或mmap'd中,而不是坐在自己的獨立文件中。那有沒有土地?加載這些對象的API是什麼?