段付ピットドキュメンタリー(1):Qtの中にアルゴリズムの小さな部分の開発は、どのようにダイナミックリンクライブラリDLLを作成するには?

家主は、QtのGUIソフトウェア環境下で開発されてきた、我々はすべて知っているが、Qtの創造者(Qtの公式IDE)でのC ++のコードを書くことです。これらの日のアルゴリズムを処理するバックグラウンドデータを必要とする、我々は、使用する他の人に利用可能なダイナミックリンクライブラリDLLにそれをする必要があります。実際には、これはとても簡単なことですが、初めて、このプロセスが記録されている、いくつかのピットを踏ん。


まず列挙し、選択の方法は、実質上ので、いくつかあります。

  1. 個人的な理解がネイティブCでのコンテナの多くはQtの中に再パッケージ化されているということです++のQt CreatorをQtCoreで依存モジュールは、このモジュールに依存していることが必要です。
  2. 純粋なC ++コードのDLLライブラリの生産のため、Qtの創造主で任意のモジュールに依存しません。
  3. VS.でDLLを作ります

方法を選択する際に考慮すべき要因:

  1. 他の人はもちろん、ユニバーサルの、第三者としてのライブラリを使用するので、任意のQtの中に自然に感じるものを頼りにしたくないことがあるので。だから、DLLのネイティブC ++コードを作成します。
  2. VSでの製品開発およびDLLライブラリC ++コードのためと考えられ、明らかに現在の主流の方法です。このように3つの方法の選択。

備考:

  1. これらのすべての3つの方法が唯一の私がここでピットを自分で強化記録し、オンライングラフィック記述を見つけることができます。
  2. 実際には、か否かQtCoreようなモジュールに依存し、そして最終的にDLLライブラリを生成するには、確かに、バイナリ実行可能なコードです。しかし、コンパイル段階の真ん中の異なる書き込みコードの開発者は、確かに私たちは、バイナリコードがOKであることを確認するために取引を行う役立っています。

良い方向性を決定した後、その後、〜それを行うようになりました


私は、DLLライブラリのプロセスは3つの段階に分かれて使用します。

  1. まず、あなたは、サードパーティのライブラリにアプリケーションをロードし、ライブラリのロード
  2. 関数シンボルライブラリを解決するために、さらにはライブラリAの成功をロードするための前提の下で、それは関数インタフェースは、一般的に関数ポインタで見つけることです
  3. 関数のアドレスを見つけた後、あなたは、関数の本体に入った機能を、呼び出して実行することができます

二段階2及び3における家主ピット段差れます。

実際には、始めに私が最初の試行ではQt Creatorは、DLLを作り、その後、QtのCreatorでこのDLLを行うために自分自身を呼び出しました。ダイナミックリンカランタイム・ライブラリーに、結果ライブラリのロードに成功しますが、機能を解決することができませんでした。私はそれがDLL内のビューの特定の機能にいくつかのツールを使用しようとした、変更されたDLL関数名の中にあった容疑者という調査、特有な理由を持っていない、彼らは実用的でなかった、あきらめます。


その後、次のVSになりました この時点でDLL関数が成功した解決することができましたが、プログラムがShiqueを実行している生産Iセグメントエラーが発生したことを示唆し、崩壊しました。


私は、VSのコードのデバッグを開始するので、PS:これは最大のステップピットでした。


構文をチェックするために、実際には異なる別のIDEコンパイラで解釈コードの同じ部分は、異なっています。


デバッグ後、VSは独自のテスト・ケースの下を通して実行されています。


しかし、私のアプリケーションまたはDLLのミスを呼び出します。私は隠されたエラーと考えるので、このときは非常に戸惑いますが、すぐに私の過去の経験に考え、ミスは、オブジェクト空間とは何かになる傾向があります。


私のDLLライブラリ、アプリケーションは、クラスオブジェクト迂回するように実行中の機能を処理するいくつかのデータは、クラスメンバ関数にカプセル化されていることC ++コードは、直接明らかに間違っている、メンバ関数を呼び出すためメンバ関数は、クラスのインスタンスによって呼び出されなければならないので。空間オブジェクトのクラスを考えてみてどのようにそれがエラーセグメントの原因であるそのメンバ関数を呼び出すことができ、存在しません。


これは、ライブラリの問題の設計におけるその存在と言うことができます。


最終的に直接機能インタフェースに露出クラスを除去し、問題が解決されます。PS:これはスタイルCのビットである、ハハ〜

公開された34元の記事 ウォン称賛22 ビュー7142

おすすめ

転載: blog.csdn.net/lizun7852/article/details/103937800