dlopen

    0熱度

    1回答

    我必須使用dlsym從外部庫加載函數名稱。 但我擔心的是他的功能是通過宏#define定義的。 假設dlopen調用成功,dlsym會在這種情況下使用#defined名稱找到正確的符號嗎? 下面是一個頭文件,其包括#define的函數名稱: #define LogVPrintDebug(context, fmt, args) \ (void) LogVPrint(context, kL

    0熱度

    1回答

    我執行的dlopen方法在MONOMAC應用: MonoMac.ObjCRuntime.Dlfcn.dlopen("/.../SomeFramework.framework/SomeFramework", 0); 的第一個參數是將一些外部框架的絕對路徑。這個方法總是返回空指針。如何使用絕對路徑在Monomac應用程序中加載動態庫? 如果我將LSEnvironment密鑰添加到Info.plis

    1熱度

    1回答

    我有一個名爲「test.so」的庫,它使用來自兩個相互引用的庫的函數。如果我在C程序中調用test.so的函數,它工作得很好,所以我假設在C函數中沒有錯誤。 但是,當我從Lua調用它時,由於「未定義符號」,它會引發Seg Fault錯誤。問題是,符號被定義,當我運行nm test.so時,我可以看到它。 閱讀下面 Lua: C++ modules can't reference eachother

    0熱度

    1回答

    對不起,我遇到了一個非常困難的時間,我把它看起來似乎。它工作正常,在使用SQLite的應用程序,但是當我與 rails new devtest --database=postgresql 事情創建了一個應用程序似乎並沒有在這個項目中工作。我正在使用postgres.app $ cd devtest/ johns-mbp:devtest johncurry$ rails generate co

    1熱度

    1回答

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

    -1熱度

    3回答

    我在問自己爲什麼這段代碼在我沒有爲fptr分配內存時工作得很好。我期望它有一個未定義的行爲因爲沒有爲fptr分配內存或做memcpy? struct conf *pconf = NULL; void (*fptr)(char *, struct conf **); void *temp = dlsym(dlptr, "config_run_all"); memcpy(&fptr, &temp

    2熱度

    1回答

    我想讓一個共享庫從它正在加載到的進程調用一個函數。該庫是用C語言編寫的,即C++中的「內核」。 kernel.cpp: #include <stdio.h> #include <dlfcn.h> typedef void(*func_t)(); extern "C" { void test(); } int main() { char *error;

    2熱度

    2回答

    如果我希望在運行時使用dlopen解析這些外部變量,該怎麼辦? 進出口試圖理解爲什麼包括一個H文件,用共享庫外部VARS和funcs中,一個C可執行程序導致未定義的/未解決。 (鏈接時) 爲什麼我要「-lsomelib」標誌添加到GCC連接,如果我只希望這些符號在運行時解析。 鏈接時間鏈接器需要這些定義解決方案。爲什麼不能在運行時使用dlopen等待分辨率。 任何人都可以幫助我理解這一點嗎?

    0熱度

    1回答

    下午,任何人。 我有一個由main.c編譯的應用程序'test'。一個由test.cpp用'-g'編譯的動態連接'libtest.so'。在main.c中,我用'dlopen'調用'libtest.so'。現在我想在test.cpp中設置一個斷點,但是gdb從未打過它。我做如下: GDB ./test -d /家庭/ LCL /測試 休息TEST.CPP:35 運行 任何人可以給我一些提示,謝謝!

    5熱度

    1回答

    我在Rust中編寫了一個簡單的基於插件的系統,以獲得使用該語言的一些技巧和經驗。我的系統動態加載庫並在運行時執行它們來初始化每個插件。當從動態加載的庫執行代碼時,我遇到了一個有趣的段錯誤問題。 這是加載和運行插件初始化函數的代碼:(此位正常工作) pub fn register_plugins<'rp>(&'rp mut self) { let p1 = match DynamicLi