char *function_name = "foo"
を使用して、Cプログラムからfoo()
を呼び出すことができます。 foo()
ルーチンは共有ライブラリにあります。私はdlopenなどへのアクセス権がありません。通常の実行可能ファイルのロードステップです。この名前を解決して共有ライブラリからロードする方法はありますか?ライブラリ関数をその名前から呼び出すにはどうすればよいですか?
答えて
いいえdlopen
とdlsym
のどちらかを使用するか、独自の関数名と関数ポインタの配列を作成して、そのように調べます。
'dlsym'は擬似ハンドル' RTLD_DEFAULT'を取ることができるので、 'dlopen'は必要ないかもしれません。 –
確かに、私はそれを言及すべきでした。 '-rdynamic'を使ってリンクしていない限り、メインプログラムで定義されたシンボルは見つからないことに注意してください。 –
私はこれが事実だと思ったが、確かにしなければならなかった。 –
関数名とロードアドレスにアクセスできる場合を除き、これを行うことはできません。 WindowsではLoadLibrary()
とGetProcAddress()
を使用してこれを行うことができます。
あなたのケースでは、私はあなたが入手可能なもの(プラットフォーム、コンパイラなどは言及していません)、またはこれが実現可能かどうかを正確にはわかりません。しかし、そうではないと強く疑う。
関数を名前で呼び出す一般的な方法は、名前と関数ポインタのテーブルを使用することです。この手法の注意点は、関数がすべて同じシグニチャを持たなければならないことです。
名前の機能は分かっていますが、機能のシグネチャが異なる場合は、if-then-else
ラダーを使用する必要があります。
同じシグネチャを持つ必要はなく、同じ戻り値の型にする必要があります。 'rettype(*)()'を関数型(プロトタイプではなく)として使うことができます。そして、あなたはそれを呼び出すときに正しい引数型を渡す責任があります。あるいは、すべての関数ポインタ型が他の関数ポインタ型へのラウンドトリップキャストを生き延びることが保証されているので、それらを呼び出す前にall型に 'void(*)()'を使い、正しい型にキャストすることができます。 –
- 1. フラグメント内の関数を別の関数から呼び出すにはどうすればよいですか?
- 2. Movieclipでムービークリップの名前をClass in Flashから呼び出すにはどうすればよいですか?
- 3. JavaScript関数を呼び出すにはどうすればよいですか?
- 4. 関数を呼び出すときに引数名を渡すにはどうすればよいですか?
- 5. 呼び出す前にこの関数を定義するにはどうすればよいですか?
- 6. それを呼び出した関数を呼び出す関数を取得するにはどうすればよいですか?
- 7. Twilio関数内から環境変数を呼び出すにはどうすればよいですか?
- 8. differentnent関数から変数を呼び出すにはどうすればよいですか?
- 9. コンポーネントのレンダリング後に関数からディレクティブを呼び出すにはどうすればよいですか?
- 10. 関数を呼び出すにはどうすればいいですか?
- 11. reactJs内の別のコンポーネントからtimeinterval関数を呼び出すにはどうすればよいですか?
- 12. 子不明の子クラスから関数を呼び出すにはどうすればよいですか?
- 13. クラス内のオブジェクト内からクラス関数を呼び出すにはどうすればよいですか?
- 14. プロジェクトルート内のファイルからSails.jsコントローラ関数を呼び出すにはどうすればよいですか?
- 15. Googleマップのインフォ画面からAngular2関数を呼び出すにはどうすればよいですか?
- 16. モジュールから動的クラスの関数を呼び出すにはどうすればよいですか?
- 17. 別のReact.jsファイルから関数を呼び出すにはどうすればよいですか?
- 18. 親コンポーネントからDrawerLayoutAndroidのopenDrawer関数を呼び出すにはどうすればよいですか?
- 19. 別のビューコントローラから関数を呼び出すにはどうすればよいですか?
- 20. シェルスクリプトからPerl関数を呼び出すにはどうすればよいですか?
- 21. キーワードから関数を呼び出すにはどうすればよいですか?
- 22. PythonプログラムからOCaml関数を呼び出すにはどうすればよいですか?
- 23. javascriptコードからjquery関数を呼び出すにはどうすればよいですか?
- 24. C++からmatlabメンバ関数を呼び出すにはどうすればよいですか?
- 25. iOS AppDelegateからView Controller関数を呼び出すにはどうすればよいですか?
- 26. DCLスクリプトからPerl関数を呼び出すにはどうすればよいですか?
- 27. PythonからJavascript関数を呼び出すにはどうすればよいですか?
- 28. LuaスクリプトからC++関数を呼び出すにはどうすればよいですか?
- 29. 関数からイベントハンドラを呼び出すにはどうすればよいですか?
- 30. ionic tsからjavascript関数を呼び出すにはどうすればよいですか?
ターゲットOSとは何ですか? – pascal
パスカルが指摘しているように、この質問にはOSやOSファミリのタグが本当に必要です。 (おそらくPOSIX ..?) –