問題タブ [dynamic-library]
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.
c - libdl を使用した C のプラグイン アーキテクチャ
私はいじくり回して、C で小さな IRC フレームワークを書いていましたが、それをいくつかのコア機能で拡張しようとしています。
これまで、私が IRC 関連の何かを書き (そして、今では約 6 つの異なる言語で多くのことを書きました... 私は燃えています!)、実際にプラグイン アーキテクチャの実装に進むときはいつでも、それはインタプリタ言語の内部にありました。たとえば、Ruby でスクリプト ファイル全体を妨害するeval
(悪い!) などです。
今、私はCで何かを悪用したい!
基本的に私ができることは3つあります
- プログラム内で単純なスクリプト言語を定義する
- 既存のものを使用し、インタープリターを埋め込む
- libdl を使用して、実行時に *.so モジュールをロードします
私は 3 番目のオプションが好きで、できれば他の 2 つのオプションは避けたいと思っています。私はある種のマゾヒストかもしれませんが、楽しくて学習にも役立つと思います。
論理的に考えると、明らかな「痛みの連鎖」は (最低から最高へ) 2 -> 1 -> 3 になります。これは単純な理由で、libdl は私の目の前で頻繁に爆発する (そして爆発する) 生のコードを扱っているためです。 .
この質問は、stackoverflow の仲間のユーザーであるあなたに向けられています。libdl はこのタスクを実行できると思いますか、それとも現実的な考えでさえありますか?
iphone - Xcode for iPhone の静的ライブラリと動的ライブラリの違い
XCodeの静的ライブラリと動的ライブラリの違いは何ですか? また、Apple が iOS アプリケーションで動的ライブラリを使用することを許可しないのはなぜですか?
macos - makefile を変換して、動的な libxxx.dylib の代わりに静的な libxxx.a を生成する
ライブラリ ( http://www.antisphere.com/Wiki/tools:anttweakbar )をコンパイルしていますが、Mac に含まれている makefile を使用して「make」を発行すると、動的ライブラリ (.dylib) が生成されます。アプリでデプロイできるように、静的ライブラリが必要です。makefile のフラグを変換してスタティック ライブラリを生成するのは簡単ですか?
「make」は、C/C++ コードをコンパイルしてリンクしているだけのようです。
linker - CMake:「可能な限り静的な」バイナリを生成する方法
CMakeでバイナリと検索/リンクされるライブラリのタイプを制御したいと思います。最終的な目標は、静的バージョンが使用可能なすべてのライブラリに対して静的にリンクする「可能な限り静的な」バイナリを生成することです。これは、テスト中にさまざまなシステム間でバイナリを移植できるようにするために重要です。
ATMは、FindXXX.cmakeパッケージ、より正確には、静的と動的の両方が使用可能な場合は常にfind_libraryコマンドが動的ライブラリを取得するため、これを実現するのは非常に難しいようです。
この機能を実装する方法のヒント(できればエレガントな方法で)は大歓迎です!
c++ - Xcode での DYLIB のビルドと使用
Xcode で .dylib をビルドしようとしています。現在、.dylib がビルドされていますが、.dylib を別のプロジェクトにドラッグして、.dylib のヘッダーの 1 つ (Seeker.h) を #import しようとすると、次のエラーが発生します。
*: そのようなファイルまたはディレクトリ
はありません Seeker.h: そのようなファイルまたはディレクトリはありません
このプロジェクトは Xcode プロジェクトとしてここから入手できます。
ヘッダーが実際にビルドされた.dylibの横のパスにあることを確認できますが、それをどうするかについてはわかりません。.dylib ファイルに関する私の唯一の経験は、完全に機能する libsqlite3.dylib のような Mac OS X に組み込まれたフレームワークです。私が .dylib ファイルで見つけることができるすべてのチュートリアルは、賢明な方法で Xcode でそれらを使用する方法をカバーしていません。それらはすべて、複雑なスクリプトまたはマシンに依存する構成に依存しているため、機能しません。
したがって、基本的には、さまざまなユーザーのビルド設定の変更に依存しない方法で、.dylib を正常にビルドし、それを別の Xcode プロジェクトに正常に含める、開始から終了までの段階的なプロセスが必要です。つまり、両方のプロジェクトをチームのメンバーに配布するときに機能する方法です。
linux - 静的/動的ライブラリを .deb 経由で Linux に配布する
配布したい静的および動的ライブラリを作成しました。ヘッダーが /usr/include/ に配置され、ライブラリが /usr/lib/ に配置されるように、.deb ファイルを作成するにはどうすればよいですか?
objective-c - プロジェクトをクラスのコレクションから .dylib に移行するプロセスは?
私はペットプロジェクトに数週間取り組んでおり、自分自身と数人の友人がそれを使用する可能性があると考え始めています. 現時点では、これは XCode プロジェクト内の目的の C クラスの山にすぎず、main() を使用してさまざまな機能をテストしてきました。今後は、.dylib ファイルとしてパッケージ化すると、このライブラリをプロジェクトで使用するのが最も簡単なようです。私が他の言語で見つけたように、これを後付けとして行うのは厄介であり、理想的には最下段にまで広げられます。:)
私は Objective-C/Xcode の世界に非常に慣れていませんが、Apple の「動的ライブラリ プログラミング トピック」によると、インターフェイス ファイルを次の形式に再調整するだけの問題であるという印象を受けています。
(参照された Apple doc から取得)。
場所:クラスを .dylib に含めるために含めたいメソッドを含むプロトコルを定義してから、前述のプロトコルを実装し、ここで ivar を宣言する NSObject をサブクラス化するインターフェイスを定義しています。
いくつかの質問:
dylib に「EXPORT」したくないプロトコルからメソッドを省略できますか?
dylib 内にクラスのサブクラスがある場合、サブクラス用に別のプロトコルを作成し、新しく作成されたクラスのスーパークラスにそのプロトコルを実装させる必要がありますか? たとえば、 person をサブクラス化すると、次のようになります。
これはおそらく非常に些細な質問ですが、すべてのクラスを .dylib に移動するという歯ぎしりを経験する前に、やらなければならないことをすべて理解しようとしています。
objective-c - 静的および動的リンクとは
重複の可能性:
静的リンクと動的リンク
やあ 、
この混乱の中で私を解放してください
1) *静的および動的リンクとは何ですか? *静的 および動的ライブラリ ?
2) これら 2 つのことの間に何らかの相互作用はありますか?
3) 静的および動的ライブラリーの動的リンクとしての静的ライブラリーのリンク -- レート ?
Objective-cに基づいた答えが得られるかもしれません
c++ - シンプルな .dylib の作成と使用
Xcodeで.dylibを作成して使用する最も基本的な方法は何ですか?
これが私がこれまでに持っているものです:
ファイル: MyLib.h
ファイル: MyLib.cpp
プロジェクトを動的ライブラリとしてコンパイルしましたが、それを他のプロジェクトで使用するにはどうすればよいですか? 私はこのようなことを試しました:
ファイル: MyLibTester.cpp
しかし、それは私に400以上のエラーを与えました(ほとんどの行に沿ってStray \123 in program
. Using<libMyLib.dylib>
は私にfile not found
エラーを与えました.
boost - 静的ライブラリと動的 (デバッグ) ライブラリのサイズの違いと最終的な exe への影響
今日ブーストのビルド済みライブラリをダウンロードするまで、静的ライブラリと動的ライブラリのサイズの違いについてあまり考えたことはありませんでした。boost の静的ライブラリは、動的ライブラリよりもはるかに大きいことがわかりました。
たとえば、デバッグ マルチスレッド ブースト ウェーブの静的ライブラリ97.7 mb
のサイズは同じですが、動的ライブラリの1.4 mb
サイズは (インポート ライブラリと dll を含む) だけです! それは大きな違いです。何故ですか?
wave
2 番目の質問は、たとえばライブラリに対して静的にリンクする場合です。それは、私の実行可能ファイルのサイズが よりも大きくなることを意味します97.7 mb
か?