問題タブ [dynamic-loading]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
142 参照

c - convertを使用したライブラリの互換性の問題

convertコマンドラインから実行して少数のJPGファイルをPDFに結合すると、セグメンテーション違反が発生します。

ほらね 何が起こっているのかを追跡するために、デバッガーで実行すると、次のようになりました。

誰かがこれが何を意味するのか教えてもらえますか?ライブラリに非互換性があるように見えますが、それに対して何ができるのか、何ができるのか正確にはわかりません。

タグが間違っている場合はお詫びします。より適切なタグを考えられる場合は、お気軽に変更してください。ソースから変換アプリを構成して作成したので、これは本当に期待していなかったと思います。

0 投票する
2 に答える
106 参照

c# - バージョン管理エラーの原因となるアセンブリの動的読み込み

複数のプラグインを動的に実行できるアプリケーションがあります。アプリケーションをインストールした後、ユーザーは適切なプラグインをインストール ディレクトリにドロップするだけで、プログラムはインターフェイスに基づいてそれらを動的にロードします。

私が直面している問題は、プラグインがメイン アプリケーションのライブラリを参照して、正しいインターフェイスにアクセスし、グローバル設定を共有することです。ユーザーが再インストールする必要なく、いつでもプラグインを追加できるようにしたいと考えています。ただし、プラグインはライブラリを参照するため、それらを読み込もうとすると、次のエラーが発生します。

すべてのプラグインをインストーラーに追加すると、このエラーを回避できることはわかっていますが、後で新しいプラグインを追加すると、ユーザーはアンインストールして再インストールする必要があります。プラグインを動的にロードする理由は、ユーザーが新しいプラグインをドロップするだけで機能するようにするためです。

アプリケーションのバージョンを気にせずにプラグインがメイン アプリケーションのオブジェクトを参照する方法はありますか?

ありがとう。

0 投票する
1 に答える
653 参照

c - dlopen でロードされた共有ライブラリは自動的に閉じられますか?

を使用して動的ライブラリを開きdlopen、プログラムが対応する なしで終了した場合dlclose、参照カウントは減少しますか? そうでない場合、どうなりますか?ライブラリは次回の再起動までロードされたままになりますか?

0 投票する
2 に答える
1951 参照

c++ - C++ で動的読み込みを使用してライブラリを再読み込みする

C++ で動的読み込みを使用してライブラリを開いた場合、後で同じライブラリの更新されたバージョンを再読み込みできますか? 私はこれを自分でテストしますが、私が取り組んでいるものに対する潜在的な解決策としてこれを検討し始める前に、実現可能性に興味があります.

違いが生じる場合に備えて、私は Linux で実行しています。他のオペレーティング システムで動作するようにできると便利ですが、必須ではありません。

0 投票する
1 に答える
746 参照

javascript - テンプレート ファイルの div への動的読み込みが IE8 で機能しない -

次のコードを使用して、テンプレートを含む html ファイルを動的に div に読み込みます。IE8 and lower

JS 関数:

template.html:

0 投票する
1 に答える
2068 参照

c - C での関数ポインターの等価性

私の質問:

  1. 関数ポインタの等価性はC標準で保証されていますか?
  2. (1)の答えが「はい」の場合。異なる最終コンパイル ユニット (メインの実行可能ファイルと共有ライブラリなど) で取得されるポインターに関係なく、これは当てはまりますか?
  3. 動的ローダーはそれをどのように処理しますか? (これが難しい理由はいくつか考えられますが、すべて PIC コードに関連しています (たとえば、elf の GOT テーブルや、それに相当する COFF が使用するもの))。(1) と (2) に関係なく、Linux ローダーはこれを保証しているようです。

ここに例があります。上記の質問は、C が何main.cを出力 するかを保証するかどうか、"Function equality: 1"または"Function equality: 0"最初のケースでは、動的ローダーがそれをどのように実現するかということになります。

common.h:

main.c:

shared.c:

Unix では、これは次のコマンドでコンパイルされます。

そして、以下で実行:

0 投票する
6 に答える
16273 参照

c# - 異なるアセンブリから (カスタム動作で) クラスを動的にロードしますか?

私たちは少数の顧客向けにアプリを構築しています。それぞれに独自の要件と同様の要件があります。また、すべてのコードを分岐ではなく、同じアプリに保持したいと考えています。また、IF はさまざまな場所にあるため、適切な選択ではありません。

すべての基本クラスを用意する予定です。次に、各顧客は、オーバーライド メソッドが特別なロジックを実行する独自のクラスを持ちます。

これを行う代わりに、コンパイル時にアセンブリをロードするにはどうすればよいですか

0 投票する
2 に答える
4652 参照

c++ - arm(cortex-m3)用の位置独立実行可能ファイル(-pie)

codesourcery g++ lite(gcc4.7.2バージョンに基づく)を使用してstm32(Cortex-m3)用にプログラミングしています。そして、実行可能ファイルを動的にロードする必要があります。
1. elf パーサーが必要な再配置可能な elf 。
2. グローバル オフセット レジスタを備えた位置独立コード (PIC)

私はグローバル オフセット レジスタを使用した PIC を好みます。これは、実装が簡単で、エルフやエルフ ライブラリに慣れていないためです。また、いくつかのツールを使用して、elf ファイルから .bin ファイルを簡単に生成できます。

「-msingle-pic-base -fpic」コンパイル オプションと「-pie」リンク オプションを使用してプログラムをビルドしようとしましたが、リンク エラーが発生しました。

...path...ld.exe: ...path...thumb2\libstdc++.a(pure.o): 再配置 R_ARM_THM_MOVW_ABS_NC に対する「ローカル シンボル」は、共有オブジェクトを作成するときに使用できません。-fPIC で再コンパイル

エラーメッセージがよくわかりません。デフォルトの標準の c/c++ ライブラリは私のオプションに対応していないようで、ライブラリのソースを入手して自分の目的のために再構築する必要があります。 1.位置に依存しない実行可能ファイルの操作方法に関する有用な情報/リンクを誰かが提供してくれますか
? 2. -msingle-pic-base オプションを使用すると、GOT および ld スクリプトをあまり気にする必要がなくなりますよね? 注: 「-pie」リンク オプションがなくても、プログラムをビルドできます。しかし、C++ 仮想関数を呼び出すと、プログラムが失敗します (IDE(keil) のシミュレーターを使用してプログラムをデバッグしている場合)。何が起こっているのか、何が欠けているのかわかりません。





-------------------------------------------------- --------------------
-- 20130314 追加

  1. -msingle-pic-baseオプションを使用すると、GOT と ld スクリプトをあまり気にする必要がなくなりますね。

私の実験から、レジスタ (私のプログラムでは r9 が使用されています) は got.plt セクションの先頭を指す必要があります。「-pie」オプションを削除すると、リンクが成功し (r9 が適切に設定されている場合)、c++ 仮想関数が正常に呼び出されます。ただし、現在の標準ライブラリが位置に依存しないようにする「-pie」オプションは依然として重要だと思います。誰かが私のためにこれを説明できますか?



-------------------------------------------------- --------------------
-- 20130315
を追加 ARM の Web サイトから ABI に関するドキュメントを参照しました。しかし、彼らは特定のプラットフォームをターゲットにしていないため、ほとんど役に立ちませんでした。EABI の概念があるようですが (sourcery の arm-none-eabi エディションを使用しています)、arm の Web サイトから「EABI」に関するドキュメントを見つけることができませんでした。sourcery と gcc からこのトピックに関するドキュメントを見つけることもできません。PICの実装は複数ありますが、none-eabiの場合に使用するソースリーg ++はどれですか? 「-msingle-pic-base」、「-fpie」、「-pie」オプションの動作は、あまり文書化されていないと思います

逆アセンブリ コードから、「-msingle-pic-base」を指定すると、r9 は「.got」セクションのベース アドレスを指す必要があり、.got セクションのポインターは絶対ポインターであることがわかりました。変数のアドレス指定は、記事の説明に似ています:共有ライブラリの位置独立コード (PIC)。そのため、ロード時に「.got」セクションを変更する必要があります。私のプログラムで使用されている「.got.plt」セクションが何であるかわかりません。関数呼び出しは PC 相対アドレッシングを使用しているようです。
「-pie」でビルドする方法や「-fpic」でコンパイルされた標準ライブラリをリンクする方法は、私にとってまだ問題です


0 投票する
1 に答える
114 参照

c++ - プラグイン内のシンボルのリストへのアクセス

プラグイン ライブラリを動的にロードするために libltdl を使用しています。このドキュメントに従っていて、これを呼び出した後

このライブラリで定義されているシンボルを知る必要があります。渡すシンボルのリストが必要です

引数としてシンボル名が必要です。

プラグインでロード可能なエクスポートされたシンボルのリストを取得する方法は何ですか?

0 投票する
1 に答える
1111 参照

linux - Linux の dyld に相当するものはありますか?

Mac OS X は、dyld と呼ばれる動的ロード用の便利なライブラリを提供します。動的読み込み処理のための多くの興味深い関数の中には、画像がロードまたはアンロードされるたびに dyld によって呼び出されるコールバックをインストールできるようにする関数がありdlopenますdlclose。これらの機能はvoid _dyld_register_func_for_add_image(void (*func)(const struct mach_header* mh, intptr_t vmaddr_slide))void _dyld_register_func_for_remove_image(void (*func)(const struct mach_header* mh, intptr_t vmaddr_slide))それぞれ と です。

dyld 関数は mach-o ファイルを処理し、Linux は ELF ファイルを使用するため、Linux 用の正確なポートを持つことができないことはわかっています。

では、Linux 用の dyld ライブラリに相当するものはありますか。または、少なくとも、これら 2 つの関数に相当する と は_dyld_register_func_for_add_imageLinux_dyld_register_func_for_remove_imageライブラリにあるのでしょうか? または、これら 2 つの独自のバージョンを自分で実装する必要がありますが、それほど難しくはありませんがdlopendlcloseコールバック関数が呼び出されるたびに作成して呼び出す方法を見つける必要があります。

編集

より明確にするために、外部ライブラリが によって動的にロードされるたびに呼び出す必要があるコールバック関数を持つライブラリを作成する必要がありますdlopen。私のコールバック関数は、動的に読み込まれたライブラリに対していくつかの操作を実行する必要があります。