C++のdllからデータを読み込む際に問題が発生しました.C++のDLLとUIの作成でデータを処理する必要があります.DListにTListを渡してから、リストにデータを挿入します。それを作る方法は?例が良い、最高の。C++のdllからベクターデータを読み込みますか?
答えて
TList
のようなDelphi固有の型をC++ DLLに渡すことはできません。そのDLLはC++ Builderで書かれていません。
C++コンパイラは、Delphi固有のタイプのTList(他のクラス、動的配列、文字列、セット、オープン配列など)を処理することはできません。また、DelphiではC++ vector
の型(または他のテンプレートやクラスの型)を扱うことができません。 だから、単にそれをしないでください。
DLLが、TList
を知っているDelphiコンパイラと同じバージョンのC++ Builderで書かれていても、RTLの2つの異なるインスタンスを扱っているので、まだ問題はあります。適切に動作しない(メモリ管理、RTTIなど)。
C++ Builderパッケージは、次のいずれかの解決策ではありません。Delphiでは、C++ Builderで書かれたBPLは使用できません。 C++ BuilderはDelphiパッケージを使用することができます。
したがって、単純な古いデータ(POD)タイプを渡すだけです。単純型の配列、または単純型の構造体/レコードを渡し、配列をポインタとして(最初の要素へ)渡します。動的配列を渡したり、配列パラメーターをオープンしようとしないでください。これらはDelphi固有のものです。
は、最初の要素へのポインタを渡すだけで、それを埋めるのに十分な空き領域を割り当てている限り、Delphi側で動的配列を使用します。 DLLがメモリを管理したり、配列を再割り当てしようとしないでください。それはできません。余分なパラメータとして、データの最大長を渡します。 DLLは、のみの配列を記入する必要があります。何が価値があるために
、私はDLL dos and don'tsについての記事を書かれています。それを読んで熟考してください。この記事では、私が上に書いたことをもう少し詳しく説明し、言語境界を越えて使用されるDLLを書く方法について少し詳しく説明します。
- 1. C#.NETからWin32ネイティブDLLファイルを読み込めません
- 2. Cのファイルからの読み込み
- 3. ストリームからストリームを読み込み[C#]
- 4. ファイルからクラスオブジェクトを読み込みC++
- 5. XMLファイルからの読み込みC#
- 6. c:ファイルからの読み込み
- 7. fifoからの読み込みC
- 8. C++ .csvファイルからの読み込み
- 9. ファイルからの読み込み - C
- 10. C++:stringstreamからの読み込み
- 11. C#PCLファイルからの読み込み
- 12. ファイルからバイト[]を読み込み、読み込みます
- 13. バッファから読み込みC
- 14. ASP.NETでのP/Invoke(dllからのテキストファイルの読み込み/書き込み)
- 15. VS2010:dllからのシンボルの読み込みが遅い
- 16. C++メモリから1ビットを読み込みますか?
- 17. C++から巨大なtxtファイルを読み込みますか?
- 18. VB6読み込み.NET 4 Windows 7からWindows XPへのC#COM DLL
- 19. C#XPSストリームのfpageからXMLを読み込みます。
- 20. 他のコンピュータからdllを読み込めません
- 21. ファイルから読み込みます。複数のデリミタ? C++
- 22. 読み込まれたDLLからRESXコンテンツを読み込み、RESXファイルではない
- 23. C#ラベルからデータを保存し、テキストボックスから読み込み
- 24. C/C++でのDLLの読み込みに問題があります
- 25. JavaからMATLABでDLLを読み込めません
- 26. SQL dllの読み込みエラー
- 27. DLLの明示的な読み込み
- 28. ファイルストリームからコンテンツを読み込むC#
- 29. ローカルデータベースから列を読み込むC#
- 30. Cコマンドラインから数式を読み込みました
ようこそスタックオーバーフロー。 [The Tour](http://stackoverflow.com/tour)を読み、[ヘルプセンター](http://stackoverflow.com/help/asking)の資料を参考にしてください。ここに聞いてください。 –
@Victoria Wut ?? –
@Victoriaおそらく私のプロフィールをもう一度読んでください。 –