2

.lib.dllの両方として作成されたライブラリがあります(Windows プラットフォーム用に完全に C++ で記述された大きなライブラリです)。ユーザーは、自分のプログラムやライブラリ、または使用したいものでライブラリを使用できます。

しかし、一部の機能を一部のユーザーに制限したいと考えています。
たとえば、

  • 私たちのライブラリには、 と の 3 つの関数foo()bar()ありhoo()ます。
  • ユーザーAfoo()は、bar()およびの機能に対して料金を支払いhoo()ます。
  • ユーザーBbar()は機能との料金を支払いhoo()ます。

したがって、Bにライブラリ ファイル (headers/libs/dlls など) を渡すと、

  1. ライブラリのコピーを作成し、foo() 関数とそれに関連するものを削除して、Bに送信できます。
  2. または、ライブラリ全体を彼に送信して、彼がfoo().

    • 1 番目の方法は、作業が膨大で、依存関係に注意する必要があるため、良くありません。bar()hoo()が に依存していないことが確実にわかっていても、foo()何かを削除して、より多くのテストを含む lib のカスタマイズされたバージョンを提供するのは頭痛の種です。そして、メンテナンスはさらに問題になります。また、SVN もカオスになります。
    • 2番目の方法は、私が推測する最良の方法です。しかし、それを行う方法は?

そして、Bfoo()が後で関数の料金を支払ったらどうなるでしょうか? それなら私は彼にそれを使わせなければならないでしょう。

これで問題が理解できたと思います。2 つの方法は単なる私の意見であり、それらに関する私の結論も間違っている可能性があります。そこで、この件についてアイデアや提案があるかどうか尋ねています。

4

4 に答える 4

1

Windows Forwared-Library メカニズム(セクション エクスポート転送)を使用して、このメカニズムを実装しようとします。このメカニズムにより、配布可能な一種のプロキシ ライブラリを構築できます。このプロキシ ライブラリは、実際のコード実行を他のライブラリに転送するだけで「何も」しません。これには、単一の共通インターフェースを提供する利点がありますが、ユーザーと、他のライブラリレイヤーで API を使用するための「許可」を区別します。

于 2012-06-27T08:06:10.400 に答える
1

インクルード ヘッダーの 1 つのバージョンを作成.dllし、ユーザーが支払い済みのインポート ライブラリをダウンロードできるようにします。それ以外の場合は、弁護士が最適なツールです。

誰かが追加のモジュールを購入しますか? 追加のインポート ライブラリをダウンロードしてもらいます。

組み込みのあらゆる種類の保護/ロック (has_paidブール値の単純なチェック、公開鍵スキーム、またはプロキシ ライブラリのいずれであっても) を回避できます。バイパスするのが簡単なものもあれば、少し難しいものもあります。

たとえば、 module に必要なインポート ライブラリを提供しないことでfoo、正直な顧客に優しいヒントを与えることができます。

一部の人々はまだあなたのお金のためにあなたをだましますか? もちろんそうするでしょう (あなたの製品が十分に興味深いものであれば) が、これらの人々はどちらにしてもそうするでしょう。彼らは最初から完全なパッケージを海賊版にするかもしれません. 彼らはとにかくあなたの製品にお金を払わないような人々です. そこで弁護士を利用します

大多数の人はあなたのお金のためにあなたをだましますか? ありそうもない。あなたの製品に喜んでお金を払ってくれる人々が、少なくとも意図的に、ライセンス料の半分であなたをだますことはまずありません。大きなリスクに対して小さな利益です。誰かがあなたをだましていることを簡単に見つけることができます。
彼らはアイデンティティを持ち、失うものを持っている人々です。彼らは、数十万の費用がかかる(つまり資産を失う)訴訟に関与したくないし、否定的な評判も巻き込みたくありません。意図せず
に 発生する可能性がありますが、必要なインポート ライブラリを出荷していないため、それは不可能です。

ユーザーは、非常に単純な方法で、次の 3 つのカテゴリのいずれかとして表示できます。

  • 私たちは 5 人の開発者がいる小さなソフトウェア会社です。このビジネスに 3 年間携わっており、会社の株式は 50,000 です。既にライセンス料として 500 を支払っていfooますが、barライセンスにはさらに 500 の費用がかかりますfooそして、私たちはあなたが知っていることを知っています. 訴訟を起こせば約 50,000 の費用がかかります。
  • 私たちはマイクロソフトです。私がこのライブラリを違法に使用していることが誰かに知られたら、私は解雇されます。では、さらに 500 の予算を超えて、上司の昼食後の睡眠を邪魔したら、上司は何と言うでしょうか? くそー、決めるにはあと 2 回の退屈な会議が必要かもしれません。ほら、このアカウントで予約できると思います...
  • 私はクールなクラッカ d00d です。私はとてもクールですが、学校の 5 人の友達が使用するプログラムのためにあなたのライブラリを引き続き使用します。ライセンス?ライセンスは敗者のためのものです。とにかく私の名前はわかりません。

最初の 2 つは失うものがありますが、3 番目のものにはありません。最初の 2 つは支払いを行い、(意図的に) ごまかすことはありません。あなたが気にすることができなかった最後のもの。

于 2012-06-27T08:36:28.970 に答える
0

サードパーティのライセンス ライブラリは、まさにこの目的のために存在します。私は Flex (所属なし) に名前を付けることができます。これは、まさにあなたが探している機能を備えていることを知っています。

于 2012-06-27T07:10:53.813 に答える
0

公開/秘密鍵の「ロック解除」メカニズムを発明できます。しかし、それはおそらくほとんど利益のない多くの作業です。私が提案するものは、誰かがハッキングすることは不可能ではありません。

提供しているさまざまなライセンス スキームに従って、コード バイナリを分割してみませんか? つまり、上記の顧客 A は、foo.lib、bar.lib、および hoo.lib を取得します。顧客 B は、bar.lib と hoo.lib のみを取得します。どちらも、すべての共通の依存関係を持つ「sharedcode.lib」を取得します。

于 2012-06-27T08:07:40.713 に答える