問題タブ [static-libraries]
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.
linux - 「ar」を使用して .o ファイルと .a ファイルを結合する (Linux)
オブジェクト ファイルと既存のスタティック ライブラリを含む単一のスタティック ライブラリを作成しようとしていますが、これらはすべてビルド プロセスの初期段階でコンパイルされています。「ar」を使用してこれを行う簡単な方法はありますか、または各ライブラリを展開 (ar x library_name) し、そのオブジェクト ファイルを統合ライブラリに追加する必要がありますか?
iphone - InterfaceBuilderは静的ライブラリのクラスを見ることができません
一部のUIViewサブクラスを静的ライブラリにリファクタリングしました。ただし、Interface Builderを使用して、静的ライブラリを使用するプロジェクトのビューコンポーネントを作成すると、ライブラリクラスを認識しないことがわかりました。クラスインターフェイスをInterfaceBuilderに表示するには、何をする必要がありますか?
更新:正解は、ヘッダーを「XIBブラウザー」にドラッグすることです。'.h'ファイルは、ファインダーウィンドウから次の画像で識別されるウィンドウ領域にドラッグできます。
代替テキストhttp://img211.imageshack.us/img211/1221/xibbrowser.png
c++ - 静的ライブラリの「アプリケーション内のグローバル変数の複数のインスタンス」の動作を模倣するが、DLL を使用する方法は?
単一の EXE と複数の DLL に分割された C/C++ で記述されたアプリケーションがあります。これらの DLL はそれぞれ、同じ静的ライブラリ ( utilities.lib
) を使用します。
ユーティリティ スタティック ライブラリ内のすべてのグローバル変数は、実際には、実行時にアプリケーション内で複数のインスタンスを持ちます。utilities.lib
リンク先のモジュール (つまり、DLL または EXE) ごとにグローバル変数のコピーが 1 つ存在します。
(これはすべて既知であり、良いことですが、DLL のコンテキストで静的ライブラリがどのように動作するかについて、背景を説明する価値があります。)
さて、私の質問.. utilities.lib
DLL になるように変更したいと思います。これは非常に大きく複雑になってきているため、形式ではなく DLL 形式で配布したいと考えています.lib
。問題は、この 1 つのアプリケーションについて、各アプリケーション DLL がユーティリティ ライブラリ内のグローバル変数の独自のコピーを持つという現在の動作を維持したいということです。 これをどのように行うつもりですか? 実際には、すべてのグローバル変数にこれが必要なわけではなく、一部だけです。しかし、私たちがすべて手に入れたとしても問題ではありません。
私たちの考え:
- ライブラリ内に関心のあるグローバル変数はそれほど多くありませんが、どの DLL がそれを呼び出しているかを特定しようとするファンキーなトリックを実行するアクセサでそれぞれをラップすることができます。おそらく、コール スタック
HMODULE
を調べて、そうでない関数が見つかるまで for each 関数を探し出すことができutilities.dll
ます。次に、呼び出し元の DLL に応じて異なるバージョンを返すことができます。 - の関数を呼び出す前に、呼び出し元が特定のグローバル変数 (おそらくスレッド ローカル変数) を設定することを義務付けることができます
utilities.dll
。ユーティリティ DLL は、このグローバル変数値を使用して呼び出しコンテキストを決定できます。 utilities.dll
実行時に複数回ロードする方法を見つけることができました。おそらく、各アプリケーション DLL がユーティリティ DLL の独自のコピーを持つことができるように、ビルド時に名前を変更した複数のコピーを作成する必要があります。これは、そもそも DLL を使用する利点の一部を無効にしますが、この「静的ライブラリ」スタイルの動作が不要でありutilities.lib
、utilities.dll
.
iphone - 静的ライブラリ ヘッダーが見つからないのはなぜですか?
Clint Harris のチュートリアルを使用して、プロジェクト間のコード共有をセットアップしましたが、すべてが私のコンピューターで期待どおりに機能します。しかし、私の同僚のマシンでは、コンパイラがビルド時にスタティック ライブラリ プロジェクトからヘッダー ファイルを見つけられないようです。
私の同僚は、git リポジトリのクローンを作成して私のプロジェクトを取得しました。関連するすべてのビルド フラグと XCode 設定を n 回確認しましたが、プロジェクトは単に彼のマシンでのコンパイルを拒否しました。
これは私が同僚に依頼したもので、主にチュートリアルからコピーして貼り付けたものです。
- プロジェクトのディレクトリへの完全なパスに空白がないことを確認してください。
- プロジェクト ディレクトリ内に、"build_output" という名前の別のフォルダーを作成します。
- XCode の [XCode] > [Preferences] で [Building] タブを選択し、[Place Build Projects in] を [Customized location] に設定して、作成した共通ビルド ディレクトリへのパスを指定します。
- 「Place Intermediate Build Files in」を「With build products」に設定します。</li>
- [ソース ツリー] タブを選択し、[+] ボタンをクリックして列に入力して、新しいソース ツリー変数を作成します。「設定名」「表示名」ともに【スタティックライブラリを作成した共有プロジェクト名】を入れます。パスには、フレームワーク フォルダーへのフル パスを入力します。
これらの手順に従って、静的ライブラリを使用するプロジェクトは、彼のマシンでも私のマシンでも同じようにコンパイルする必要があります。しかし、そうではありません。基本的に、彼が受け取るエラーは次のとおりです。
次に、ヘッダーの欠落が原因で発生した一連のその他のエラー。
これをトラブルシューティングするための戦略はありますか? または、同様の経験があり、苦労して得た知識を共有できる人はいますか? 私が要約した手順に欠けているものはありますか? スタティック ライブラリをコンパイルするときに、Copy Headers ビルド フェーズでヘッダーの役割を設定する必要がありますか?
iphone - リンクエラーの解決方法 - static lib iPhone
iPhone で静的ライブラリを作成しようとしましたが、別のプロジェクトで使用できません。このエラーが発生しています:
XML
とTicker
は私のクラスです。静的ライブラリでそれらを使用しています。作成された"MinutesToMidnight"
のは、この静的ライブラリを使用しているプロジェクトです。これはリンカー エラーに関連するものだと思います。この問題の解決を手伝ってください。
iphone - iPhoneデバイス3.0の静的ライブラリのカテゴリ
静的ライブラリにカテゴリがあります。アプリケーション開発者は、静的ライブラリを適切に使用するために、-ObjCフラグを「その他のリンカーフラグ」に設定する必要があります。iPhoneデバイス/iPhoneSimulator2.xおよびiPhoneSimulator3.0では正常に動作します。ただし、iPhoneデバイス3.0ではクラッシュします。この記事に書かれているように、これは新しいリンカーのバグです。彼らはもう1つのリンカーフラグ-all_loadを使用することを提案しています。しかし、このフラグを追加すると、シンボルが重複しているため、ビルドも失敗します。
iPhoneデバイス3.0の静的ライブラリでカテゴリを使用するにはどうすればよいですか?助言がありますか?
qt - Qt にライブラリを含めると、なぜこれが機能しないのですか?
これは本当に単純なはずです。Qt でライブラリ (このnewmat ライブラリ) をコンパイルし、ファイル libnewmat.a を作成しました。このライブラリを別のプロジェクトに統合する必要がありますが、機能させることができません。
.pro ファイルの LIBS 変数を使用して、次のようないくつかのことを試しました。
パスにスラッシュとバックスラッシュを使用してみましたが、違いはありませんでした。ライブラリが実際に見つかったことを確認するために、次のチェックも含めます。
だから私はそれが問題ではないことを知っています。私が理解していないのは、コンパイラの出力 (qmake がコマンド ラインで使用しているコマンドを表示する) を ctrl+f すると、ライブラリへの参照が見つからないことです。何らかの理由で、私の LIBS 変数は、私が期待するコマンドラインで何の違いもありません。これは、誰かが再確認したい場合にライブラリが参照されると予想されるコンパイラ出力のサンプルです。
ここで見逃している本当に単純なものがあると思います。
Windows Vista で QtCreator を使用しています。
iphone - iPhone SDK 3 EXC_BAD_ACCESS と openldap ライブラリ
誰かが私を助けてくれることを願って、
iPhoneOS3 でアプリの openldap をビルドしようとしていますが、ライブラリから何かを使用しようとすると、次のエラーが発生します。
プログラム受信信号: 「EXC_BAD_ACCESS」。
このWebサイトに従って、openldapをiphone gccでコンパイルしました。だから私はこれでopenldapを構築しました:
libldap.a、liblber.a をプロジェクトにコピーし、すべてのヘッダーを ldap.h としてコピーしました ....
プロジェクト設定で私が持っている:
ビルド時にはすべて問題ありませんが、次のコードで上記のエラーが発生します。
誰かが私に何ができるか考えていますか?
ありがとうございました