dlsym

    1

    1答えて

    と機能の介在をクリーンアップ、私はこのコードの古典スニペットを使用します。 ==32691== 32 bytes in 1 blocks are still reachable in loss record 1 of 1 ==32691== at 0x4C279FC: calloc (vg_replace_malloc.c:467) ==32691== by 0x528559F: _dlerr

    5

    1答えて

    dlopen(NULL, ...)を実行し、静的にコンパイルされたバイナリのシンボルを取得する予定はありますか? たとえば、プログラムが動的にコンパイルされ、-rdynamicを使用すると、次のコードでシンボルを取得できます。 foo.cため $ gcc -static -o foo foo.c -ldl -rdynamic /tmp/cc5LSrI5.o: In function `main'

    1

    1答えて

    私はランタイムに動的ライブラリを読み込み、それらのライブラリから名前で関数を呼び出すためにPOSIX dlopen/dlsym APIを使用しています。 dlsymの結果をどこかに保存するのはパフォーマンス上の理由ですか?または、dlsymはすでに独自のキャッシュを行い、別のレイヤーを追加することは役に立たないか、または有害なものになるでしょうか?関数は多くの場合、何度も呼び出される可能性がありま

    0

    1答えて

    実行可能ファイルの名前から関数またはグローバル変数のアドレスを取得する方法は? dlsym()は、動的ライブラリファイル内の関数のアドレスを取得できます。しかし、実行可能なelfファイルでは機能しません。 ELFファイルを解析する前に、実行可能なelfファイルに同じ機能を提供するライブラリが1つあるかどうかを確認したいのですが?次に、その名前から関数またはグローバル変数のアドレスを取得できます。あ

    0

    1答えて

    私はgccで共有ライブラリをコンパイルし、dlopenを使用してロードしています。 -fvisibility=hidden 可視性フラグなしでライブラリをコンパイルすると、すべてが完全に機能します。しかし、フラグを付けてコンパイルすると、dlopenで次のエラーが発生します。 libtest.so: cannot open shared object file: No such file or

    2

    1答えて

    JavaScriptCoreフレームワークのフォークがあります。ここにはエクスポートされた独自の関数が追加されています。フレームワークは単にfindをコンパイルします。フレームワーク上nmを実行する機能(JSContextCreateBacktrace_unsafe)が実際にエクスポートされることが明らかになった: Leo-Natans-Wix-MPB:JavaScriptCore.framewo

    1

    2答えて

    C++を使用しているSolaris 10の現在の実行可能ファイルから関数のアドレスを知る必要があります(私はGNU g ++ 4.9.2を使用しています)。たとえば、void doSomething(const char * p)という関数があります。これは、現在の実行可能ファイルで定義されている場合と定義されていない場合があります。だから、私は、現在の実行可能ファイル内の関数を検索したい場合は、

    3

    1答えて

    が存在するにもかかわらず、NULLを返し、私は期待していないですこれは、私は私のプログラム内のシンボルを検索するためにdlsymをを使用していますが、それは常にNULLを返します。マンページによると、何らかのエラーがあった場合や、シンボルが実際にNULLの場合、dlsymはNULLを返します。私の場合は、エラーが発生しています。今晩私が作ったMCVEをお見せしましょう。ここで はinstr.cの内

    1

    1答えて

    私はgccを使ってLinuxのCプログラムでRust .soライブラリを動的にリンクしようとしています。エラーなしで唯一のdlopenとdlclose結果を使用して、私は次のコードでセグメンテーションフォールトを取得: char * (*my_function)(char *); char *my_input_string = "foo"; //...abbreviated code...

    0

    1答えて

    共有ライブラリを作成しました。ここではFooクラスを定義しました。 Fooクラスには、sayHi()という名前の関数があります。私の質問は、Fooオブジェクトfooを作成した後で、どうやってsayHi()を呼び出すことができるかです。私はここに自分のコードを入れます。 mylib.h #ifndef FUNTEST_MYLIB_H #define FUNTEST_MYLIB_H class