問題タブ [bpl]

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 に答える
371 参照

delphi - パッケージの `requires` 句を条件付きにすることはできますか?

Anders Melander の DragDrop パッケージを使用しています。
Win32 モードでは問題なく動作しますが、64 ビットでは調整が必要です。
これを行う{$IFNDEF CPUX64}には、designIDE への参照をコメント アウトします。

ただし、パッケージソースをから変更すると

コンパイラは、パッケージ ソースの DesignIDE 行を単純に破棄し、次のものだけを残します。

これは X64 では問題なく動作しますが、32 ビット用に再構築するとすぐに壊れます。

win32 のデザインタイム アイテムを含む 1 つのパッケージを、X64 用に IFDEF アウトされた競合するアイテムと一緒にする方法はありますか? または、X64 用に別のランタイム パッケージを作成する必要がありますか?

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

c++builder - C++ Builder 2010 から C++ Builder 10 Seattle にアップグレードされたプロジェクトでビルドした後に bpl をインストールできない

C++ Builder 2010 からシアトルへの更新を行っている大規模なプロジェクト グループがあります。かなりのジャンプです:)私はいくつかの問題に遭遇し、それらをすべて解決することができましたが、昨日は少し頭をかきました。1 つのプロジェクトが、システムの他の部分で使用される bpl を構築します。いくつかの小さなコードを微調整した後、正常にコンパイルされますが、プロジェクトを右クリックして bpl を「インストール」すると、次のようなエラー メッセージが表示されます。

プロシージャ エントリ ポイント @TLanguageDialog@$bctr$qqrp25System@Classes@TComponent がダイナミック リンク ライブラリ TranslationTools.bpl に見つかりませんでした

私の記憶が正しければ、TComponent は VCL ライブラリの一部であるため、ここでの問題とその解決方法を理解しようとしています。bpl の構築方法が変更されたので、以前は存在しなかった何かが期待されていますか? 前述のとおり、問題なくコンパイルされますが、念のため、インクルード パスと lib パスの設定を示します。

インクルード: $(BDSINCLUDE)\windows\vcl;$(BDSINCLUDE)\windows\vcl\design

ライブラリ: $(BDSLIB)\$(PLATFORM)\$(Config);$(BDSLIB)\$(PLATFORM)\Release\psdk

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

linker-errors - C++ ビルダー パッケージのエクスポート リンク エラー

TForm サブクラス、たとえばTForm_Subを含む*.bpl プロジェクトBPL_Aを作成します。

ヘッダー ファイルForm_Sub.hは次のように なります。

ソース ファイルForm_Sub.cppは次のようになります。

そして、別の *.bpl プロジェクトBPL_Bを作成して、TForm_Sub インスタンスを動的に作成します。

BPL_B の Requires セクションに BPL_A.bpi を追加します。ただし、BPL_B をビルドすると、次のリンク エラーが発生します。

[ILINK32 エラー] エラー: モジュール xxx.OBJ 内の SomeClass::CreateUI() をエクスポートすると、ユニット BPL_A]Form_Sub 内の __fastcall TForm_Sub::TForm_Sub() が参照されます。

何が欠けているのかわかりません。

0 投票する
0 に答える
163 参照

package - カスタム検索パスを使用して読み込まれたパッケージを遅らせる

BPLプロジェクトを作成し、出力 .bpi ファイルを別の EXE プロジェクトに追加しましEXEプロジェクトは適切にコンパイルおよびリンクされます。.bplファイルを.exeファイルと同じフォルダーに置くと、EXE は正常に動作します。ただし、.bplファイルを.exeファイル以外のフォルダーに置くと、 EXEが実行されず、「XXX.bpl が見つからないため、プログラムを開始できません...」と表示されます。

DLL版も書いて、.dllファイルを.exeファイル以外のフォルダに入れました。.dllEXEプロジェクトの [C++ リンカ] -> [詳細設定] -> [DLL の読み込みを遅らせる] リストに追加しSetDllDirectory()、カスタム検索パスに関数呼び出しを追加しました。EXEは問題なく動作します。.bplを介してカスタム検索パスを使用して遅延ロードした場合、 .bplは.dllと同じように動作しないようSetDllDirectory()です。よろしいですか?

テスト BPL コードは次のようになります。

" TestPackage.h "

" TestPackage.cpp "

そして、テスト フォーム アプリケーション コードは次のようになります。

" TestApp.cpp "

アプリケーション オプションで「 Build with runtime packages」と「Dynamic RTL 」の両方を無効にしました。TestPackage.bplをEXEとしてフォルダーに配置すると、EXEは正常に動作しました。EXEとは別にBPLをアップグレードして、他の番号を返すようにすることもできます。したがって、最終的な結果は、カスタムBPLEXEでデプロイできるようであり、 RTLVCLなどの他のBPLは、依然としてEXEで静的にリンクされています。唯一の制限は、カスタムBPLがEXEと同じフォルダーにある必要があることです。TestPackage::GetInt()、これを克服する方法はありますか?

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

bpl - 「vcl.bpi」を BPL プロジェクトに追加する方法

C++ ビルダー 2009 を使用して BPL プロジェクトを作成します。「Requires」リストには、デフォルトで「rtl.bpi」があります。いくつかの VCL フォームを「含む」リストに追加、BPL プロジェクトをビルドしようとしました。「 XXX.OBJ から参照された未解決の外部 'Forms::TForm::' 」などのリンカ エラーが原因で、ビルドが失敗します。「 Requires」リストに「 vcl.bpi」を追加する必要があることは明らかです。次の手順を実行します。

  1. 「 Requires 」を右クリックし、「参照の追加」を選択します。
  2. [追加] ダイアログ --> [必須] タブで、[パッケージ名] テキスト編集で「vcl.bpi」と入力し、[OK] をクリックします。
  3. 「 File vcl.bpi not found 」というエラー ダイアログが表示されます。

"vcl.bpi" を手動で追加するにはどうすればよいですか?

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

plugins - .EXE とカスタム .BPL ファイルのみをデプロイする方法は?

プラグインを使って GUI アプリケーションを開発したいと考えています。プラグインには、Plugin-Core ライブラリのベース フォームから継承された VCL フォームが含まれています。メイン アプリケーションは、動的にロードするプラグインを選択してから、表示する Form サブクラスを選択できます。

ユーザー側では、メインの.EXE、Plugin-Core ライブラリ、およびさまざまなモデル用の多くのプラグイン ライブラリをデプロイしたいと考えています。メインの.EXEと Plugin-Core ライブラリを変更せずに、新しいデバイス用の新しいフォームを表示するために、新しいプラグイン ライブラリをユーザーにリリースするか、既存のプラグイン ライブラリを変更することができました。

私が開発した最初のバージョンは DLL アプローチを使用しています。つまり、Plugin-Core ライブラリとプラグインの両方が DLL 形式です。ユーザー側ではすべてがうまくいっています。ただし、開発者側では、Plugin-Core DLL プロジェクトで Base Forms が定義されていないと、プラグイン DLL プロジェクトをリンクできません。これは、基本フォームが実際には各プラグイン DLL プロジェクトで静的にリンクされていることを意味し、いつか基本フォームを変更して Plugin-Core DLL プロジェクトを再構築する場合、すべてのプラグイン DLL プロジェクトを再構築し、プラグイン.DLLを再リリースする必要があります。ユーザーも。

StackOverflow で検索して質問したところ、VCL フォームが DLL の境界を越えて継承できないという制限は、RTTI の競合 (?) によるものであることがわかりました。推奨される解決策は、ライブラリを DLL から BPL 形式に変更することです。これは、私が開発した 2 番目のバージョンです。次の2つを除いて、すべて問題ありません。

  1. プラグイン BPL から動的に読み込まれたフォームは、Windows タスクバーのメインの.EXEから分離されています。それは私が望んだものではありません。解決策は、 .EXEプロジェクトで「ランタイム パッケージを使用してビルド」を有効にしたことです。

  2. .EXEプロジェクトで「Build with runtime packages」を有効にした後、 vcl.bplrtl.bplなどの他の .BPL をユーザーにリリースする必要があります。これは私が望んでいたものではありません。

上記の 2 つの問題を同時に解決できることを知りたいですか? 私の考えでは、次のようにすれば、2 つの問題の両方を解決できます。

  1. .EXEプロジェクトで「ランタイム パッケージを使用してビルド」を無効にします。
  2. すべての.BPLプロジェクトで「ランタイム パッケージを使用してビルド」を有効にします。

このように、.EXEはvcl.bplrtl.bpl がバンドルされていなくても実行でき、依存ユニットが既にメインの.EXEの一部であるため、プラグイン.BPLを正常にロードできます。私は正しいですか?ただし、[ランタイム パッケージを使用してビルド] チェックボックスは、すべての.BPLプロジェクト オプションで無効になっています。その結果、ソリューションが機能するかどうかを確認する機会がありません。説明が長くなって申し訳ありません。会社のインターネット セキュリティ ポリシーにより、画像を添付できません。

0 投票する
0 に答える
60 参照

c++ - Delphi BPL から基本型を継承する C++ クラスを DLL にエクスポートすることは可能ですか?

Gctable::TGcTable継承元のクラスを作成し、 .DLLPgaccess::TPgTableにエクスポートしたい

質問:可能ですか?

私はそのようなクラス定義を持っています:

TDump ユーティリティを使用して、.dll からエクスポートされたメンバーを確認すると、次のように表示されます。

Gctable::SqlSchemaHelperしたがって、クラスはエクスポートされましたが、Gctable::TGcTable


TPgTable はpgdacvclXXX.bpl