問題タブ [shared-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.

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

.net - 開発とビルドのために共有アセンブリを GAC にインストールする

ここで、GAC に関するいくつかの投稿と、共有アセンブリを GAC にインストールしてアプリケーションを展開してはならない理由を読みました。これは、クライアント マシン上のアプリケーションの更新をより簡単にするはずなので、理にかなっています。

ただし、開発中とビルド サーバー上で GAC が役立つと思われる領域が 2 つあります。

たとえば、Microsoft アプリケーション ブロックを使用する場合、それらを GAC にインストールして、そこで参照することができます。これは、開発者のマシンごとにパスへの絶対参照が異なる可能性があるため、これを行う方が簡単であるため、理にかなっています。また、すべての共有コンポーネントでネットワーク ドライブを共有するよりも優れています。

次に、おそらくビルド サーバーに対して同じことを行います。ただし、これに関する唯一の問題は、バージョン 2.0 のアプリケーション ブロックを使用するアプリがあることです。後で、バージョン 3.1 を使用するようにこれをアップグレードします。ある時点で、顧客が発見したバグをテストするためにそのアプリケーションの以前のバージョンを再作成する必要があるかもしれませんが、ビルドを再作成すると、最初にビルドされたアプリケーション ブロックのバージョン 2.0 ではなく、バージョン 3.1 が選択されます。これは本当ですか、それとも GAC にある限り、古いプロジェクト ファイルは古いバージョンの dll を引き続き参照しますか?

この特定の点について、あなたの考え/意見は何ですか?

共有コンポーネントのすべてのバージョン (ダウンロードまたはビルド) を MSI としてすべての開発者に配布できるようにしたいと考えています。MSI は GAC にインストールされ、アプリケーション インストーラーの一部として顧客のマシンに「XCOPY」で展開されます。これはこれを行うための最良の方法ですか?

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

c++ - 共有ライブラリの静的クラスメンバー

私は次のようなクラスを持っています

このクラスを含む共有ライブラリ(dll)を作成したいと思いますK。私が呼び出すライブラリでコンパイルされたcppファイルで

静的変数をインスタンス化します。K::adllはエラーなしでコンパイルされますが、ライブラリを使用すると、メンバーとの未解決の外部シンボルエラーが発生しますK::b。それを使用したいメインプログラムでは、クラスの宣言に同じヘッダーを含めます。K唯一の違いは、使用するライブラリと class __declspec( dllexport ) K { ... } メインプログラムの違いです。class K { ... }

おそらく私は複数の間違いをしているので、私の質問はどうすればいいですか?

  • ライブラリ内の静的メンバークラスを共有するようにリンカに指示しますか?
  • メインプログラムのライブラリでインスタンス化された静的クラスメンバーを使用しますか?

PS。VisualStudio2008を使用しています...

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

c++ - GCC 静的ライブラリから関数をエクスポートする方法

OS X で GCC を使用して、複数の静的ライブラリから共有ライブラリを作成したいと考えています。

一部の静的ライブラリでは、共有ライブラリにそれを呼び出すコードがありません。これらの静的ライブラリのシンボルをエクスポートしたいだけです。これはデバッグ モードでは機能しますが、リリース モードでは機能しません (特にデッド コード ストライピングを有効にした場合)。理由は理解できます.gccは、静的ライブラリのこれらの関数は決して使用されないと考えています. しかし、gccにこれらのシンボルを強制的に含めるにはどうすればよいですか?

ローダーに -u オプションを追加しようとしましたが、「ローカル」シンボルしか生成されません。リンカにエクスポート シンボルを生成させる方法は?

また、MSVC のように、リンカー ディレクティブをソース コードに追加する方法があるかどうか疑問に思っています。#pragrma comment(linker, "/INCLUDE:xxxx")

私が静的ライブラリで定義した関数は次のようなものです:

前もって感謝します!-ジョニー

0 投票する
5 に答える
16002 参照

c# - DLL 内のシングルトン クラスをプロセス間で共有できますか?

他のプログラマーが一部のハードウェアを制御するために使用するカスタム .net ハードウェア フレームワークを作成しています。ハードウェア フレームワークにアクセスするために、DLL への参照が追加されます。複数のアプリケーション (プロセス) からアクセスされる共有クラスが必要です。

シングルトン パターンが必要なようですが、プロセス内の複数のスレッドに対してのみ機能します。私は完全に間違っている可能性がありますが、これは私が現在持っている C# コードの例です。設計が間違っていると感じずにはいられません。もっと具体的な情報を共有できればいいのですが、できません。

  • お客様のアプリケーションを制御することはできません。ソリューションは、フレームワーク (DLL) 自体に含まれている必要があります。

フレームワーク: (共有 DLL)

テスト アプリケーション: (最終的に顧客アプリ)

最初に起動したアプリケーションの出力は次のとおりです。

Enter キーを押してリソースを取得してください!

1: 2009 年 6 月 24 日午前 8 時 27 分 34 秒

3: 2009 年 6 月 24 日午前 8:27:34

Enter キーを押してプロセスを閉じます。

2 番目のアプリケーションでは、次の出力が得られます。

Enter キーを押してリソースを取得してください!

9: 2009 年 6 月 24 日午前 8:27:35

10: 2009 年 6 月 24 日午前 8:27:35

Enter キーを押してプロセスを閉じます。

結論

クラスが最初にインスタンス化された時点で、両方のアプリケーションが同じ文字列を返すようにしたいと考えています。

ご覧のとおり、シングルトンはプロセス内の複数のスレッドでは機能しますが、クロスプロセスでは機能しません。解決策が見つからないため、これを実行できない可能性があります。

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

firefox - FirefoxのSOインジケーターを作成することを計画します

問題: Firefoxの下部バーにあるSOインジケーターによって、Not-SOサイトにいるときに、Not-SOページがSOで議論されていることを示すため

拡張機能はどのように機能する必要がありますか?

非SOページがSOにある場合は、カラフルなSOインジケーターが表示されます。

使えないと思います

  • グーグル(アドオンは明らかにそのTOSに反しているため)
  • SOには次のGoogle検索と同様の検索はありません

使用を許可されていないGoogle検索

Not-SOページが他の場所で議論されているかどうかを確認するものはありますか?

0 投票する
3 に答える
4253 参照

sharepoint - SharePointでカスタムドキュメントライブラリを作成する

SharePointページにドキュメントライブラリがあり、10個のドキュメントがあります。

ユーザーAがログインしている場合、そのドキュメントライブラリにあるこれらのドキュメントのうち5つだけを表示するようにします。

これを機能させるためのカスタムドキュメントライブラリを作成するにはどうすればよいですか?

MOSSをインストールしています。

前もって感謝します!

0 投票する
5 に答える
19635 参照

c++ - C++ での dlsym() および dlopen() の代替

一部で共有ライブラリを使用するアプリケーションがあります。これらのライブラリはコンパイル時にリンクされます。
実行時に、ローダーは共有オブジェクトが にあることを期待します。LD_LIBRARY_PATH見つからない場合、アプリケーション全体が「共有ライブラリをロードできません」というエラーでクラッシュします。クライアントがライブラリを持っているという保証はないことに注意してください。適切なエラーメッセージを残すアプリケーションも、独立した部分が正しく機能するはずです。

この目的のために、私は共有ライブラリの API を使用していますdlsym()dlopen()これに関する問題は、API に多くの関数がある場合、それらに個別にアクセスする必要dlsym()があり、私の場合はメモリの破損とコードのクラッシュにつながる ptr を使用する必要があることです。

これに代わるものはありますか?

0 投票する
3 に答える
461 参照

c++ - C の動的ロード ルーチンを使用する際の問題

C++ で記述されたさまざまなモジュールで構成されるアプリケーションがあります。
モジュールの 1 つは、SunGrid Engine で分散タスクを処理するためのものです。クライアントがグリッドをサポートしていない場合は、ローカル マシンを使用する必要が

あります API libdrmaa.so の共有オブジェクトは、コンパイル時にリンクされ、実行時にロードされます。
私のアプリケーションを使用しているクライアントがこの「.so」を持っている場合、すべて問題ありませんが、クライアントがそれを持っていない場合、アプリケーションは共有ライブラリのロードに失敗して終了します。
これを回避するために、API 呼び出しを dlsym() と dlopen() を使用して取得した関数ポインターに置き換えました。dlopen の呼び出しが成功せず、目的が達成された場合、グリッドの代わりにローカル マシンを使用できるようになりました。
現在の問題は、アプリケーションが小さなテストケースでは正常に実行されるようになったことですが、大きなテストケースではセグメンテーション エラーがスローされますが、動的読み込みを使用する同じコードは正しく機能します。

dlsym() と dlopen() を使用しているときに何か不足していますか?
同じ目標を達成する他の方法はありますか?

どんな助けでも大歓迎です。

ありがとう、