問題タブ [c++builder-10-seattle]
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++ - TStyledPresentationProxy の子孫がクラスに登録されていません
から継承するカスタム グリッド コントロールがありTGrid
ますTFmGrid
。このコントロールは、Rad Studio 10 Seattle Update One で正常に機能していました。TFmGrid
最近 10.1 Berlin にアップグレードしたところ、アプリケーションの実行時とデザイナーの両方で次のエラー メッセージがコントロールに表示されることに気付き始めました。
TStyledPresentationProxy の子孫がクラス TFmGrid に登録されていません。FMX.Grid.Style モジュールを uses セクションに追加する必要があるかもしれません。
以下の画像は、グリッド コントロールにエラー メッセージがどのように表示されるかを示しています。
メッセージが示すように、コントロール #include <FMX.Grid.Style.hpp>
のヘッダー ファイルに追加することから始めましたが、これは何もしていないようです。TFmGrid
したがって、 の子孫を登録しようとする限り、TStyledPresentationProxy
どこから始めればよいか正確にはわかりません。メソッドに関するこのドキュメントを見つけました:
指定された名前、または指定されたコントロール クラスとコントロール タイプの組み合わせで、プレゼンテーション プロキシ クラスの登録を試みます。
したがって、このメソッドまたは少なくとも同様のものを使用する必要があると思いますが、このメソッドを呼び出す方法がわかりません。
しかし、それでは、このコードをどこで呼び出すべきかという問題が生じます。
カスタム コントロールの名前空間Register()
には、コントロールの作成時に IDE によって自動生成されたと思われるメソッドがあります。
の子孫を登録するには、そこに何かを呼び出す必要がありTStyledPresentationProxy
ますか? これについての適切な方法は何ですか?
c++builder - Embarcadero Technologies C++ Builder で使用する Xerces-c ライブラリをビルドする方法は?
xerces.appache ミラーから Xerces-c ソースをダウンロードしました。32 ビットと 64 ビットの両方で、C++Builder 10.0 Seattle で使用できる DLL を作成したいと考えています。
ビルド手順とダウンロード アーカイブは、VS Studio Express 2015 で使用できる Visual C++ ソリューション、または Borland C++ 用に設計された make ファイルを使用してビルドする手順を提供します。Borland は 10 年前に C++ ツールを放棄したので、make ファイルを試すことさえせずに、Embarcadero 10.0 Seattle コンパイラでは動作しないだろうと思いました。したがって、VS Studio Express 2015 で xerces-all をビルドしたところ、すべて動作しているように見えます。(DLL はエラーなしでビルドされ、サンプルはビルドされて実行されているようです。)
VS Studio ソリューションに変更を加えようとしましたが (呼び出し規約を から__cdecl
に変更__stdcall
)、サンプルのビルドに失敗するだけです。
Remy Lebeau からのアドバイスと、私が見つけたこの記事 ( Using Visual C++ DLLs with C++Builder ) に従って、Embarcadero ユーティリティの TDUMP、IMPDEF、および IMPLIB を使用して、ビルドされた DLL からエクスポート名を抽出しようとしました。これらは、次のような出力を生成します。
このスレッドで簡単なテストとして構築しようとしているアプリケーション コードを投稿しました。
C++ Builder テスト アプリで未解決の外部 'xercesc_3_1::XMLPlatformUtils::Initialize'
私は信じられないほど混乱しています。ツールで使用できるDLLまたはLIB を入手するにはどうすればよいですか?
dll - ランタイム ライブラリを使用した VCL アプリの展開....32 ビットと 64 ビットのリンク方法
VCL アプリを展開する Win 7 64 ビット システムがあります。
そのシステムで 64 ビット VCL アプリケーションと 32 ビット VCL アプリケーションの両方を実行しています。
64 ビット アプリケーションは C++ Builder 10.0 Seattle でビルドされており、正常に動作します。
32 ビット アプリケーションはシアトルにアップグレードされますが、ここで混乱が生じます。borlndmm.dll でラッパーが見つからないというエラーが発生しました。C++Builder の Win32 および Win64 redist フォルダから、System32 および SySWOW64 ディレクトリの両方で DLL を更新しました。「アプリケーションを正しく起動できませんでした 0xc00007b」というエラーが表示されます。32 ビット アプリケーションが 64 ビット DLL にリンクしているようです。
64 ビットと 32 ビットの VCL アプリケーションを同じシステムに共存させ、それぞれの DLL に正しくリンクするにはどうすればよいですか? これを修正するにはどうすればよいですか?
borlndmm.dll を必要としないように 32 ビット アプリケーションをコンパイルできればよかったのですが、[ダイナミック RTL とリンク] オプションと [ランタイム パッケージとリンク] オプションを無効にしても、borlndmm.dll とのリンクでエラーが発生します。
dll - VCL アプリケーション - AxisMediaControl.dll ダイナミック リンク ファイルの場所
C++Builder 10.0 Seattle でビルドされた VCL アプリケーションがあります。フォーム上で Axis Media Control を使用してビデオを表示するため、AxisMediaControl.dll
実行時にファイルがロードされます。
過去に、これを 32 ビットのターゲット マシンにデプロイしたことがあり、アプリケーションはC:\Program Files\AppName
ディレクトリにあり、AxisMediaControl.dll
同じ場所にインストールされていました。すべてが期待どおりに機能しました。
このアプリケーションは 32 ビット アプリケーションであるため、64 ビットのターゲット マシンにデプロイする場合は、C:\Program File (x86)\AppName
ディレクトリにインストールされます。もう一度、AxisMediaControl.dll
ファイルがアプリケーション ディレクトリにデプロイされます。
アプリが「指定されたモジュールが見つかりませんでした」というエラーで起動に失敗します。Process Monitor を使用すると、プログラムがdirProgram Files
ではなく古いディレクトリで Axis DLL を探していることがわかりました。x86
アプリケーションがその場所で DLL を検索する原因は何ですか?
開発マシンで同じバイナリを実行すると、アプリケーションはSysWOW64
ディレクトリから DLL をロードします。DLL がターゲット マシンのそこに配置されている場合でも、その場所を検索できません。私が理解できない古いアプリケーションパスのみを調べています。Program Files
誰かが光を当てることができることを願っています。