2016-06-22 7 views
7

に私は現在、いくつかの古い不十分な文書化コードをプロジェクトに取り組んでいます、そして様々な.hファイルを通じて自分の道をナビゲートしようとしています含まれているすべての関数(.libと.dllファイルに定義されている定義)の使用に関する完全なドキュメントを提供していることを示しています。 .hファイルの一つがインクルードは、宣言したが、これらは私が現在の変数の状態を返すか、特定のアクションを実行するために期待する機能となるよう理由は、ライブラリの.hファイル

class DLL ExampleLibraryClass { 
public: 
    int exampleGetValue() {return 0;} 
    void exampleSetValue(Type val) {;} 
    void exampleActionFxn() {;} 
}; 

ような単純なreturn文または空のステートメントのいずれかで定義されていないだけの機能を持っていますこれが私を困惑させる理由です。

さらに:

  • Iは、依存関係ウォーカーを使用し、各関数は、DLLに一致する定義を持っていることを見出しました。

  • キーワードDLLが

    #ifndef _PWSDLL_ 
    # define _PWSDLL_ 
    # define WINCALL _stdcall 
    # ifdef _USRDLL 
    #  define DLL __declspec(dllexport) 
    # else 
    #  define DLL __declspec(dllimport) 
    # endif 
    #endif 
    

    _USRDLLが定義されていないため、DLLは、私の質問は、空の定義(の明らかな影響についてはあまりを公転し__declspec(dllimport)

として定義されていると定義されています私が何もしていない、すでにSOで議論されている)と、.hファイルがこのように書かれた理由と、そのファイルをどのように利用するのかについて詳しく説明します。これはよくあることですか?リンカーはリンクされたライブラリの関数の定義を探しますか?より多くの手がかりを探すべき他のコードがありますか?あるいは、最も広い意味で、私はこれにどのように対応すべきでしょうか?

多くのおかげで、あなたがこれに対処するためのより多くの情報が必要な場合は私に知らせてください、私はまさにこの問題で何が重要かわかりませんよ。

EDIT:サンプルコードではを追加しまし忘れ戻り値の型。

EDIT:DLLの定義に関するを追加しましたメモ。

+3

コンパイルのシナリオごとにヘッダーが常にこのように消費されていますか?特定の条件でクラスを「ダミークラス」にする、条件付きのコンパイルが作業中に行われることがあります。 – KABoissonneault

+3

欠落している返品タイプは私に関係しています。それは有効なC++ではありません。 – NathanOliver

+3

これは無効なC++です。 –

答えて

0

このコードをいくつかの用途に使用するシナリオの1つは、関数をオーバーライドすることです。これらの関数はいくつかのデフォルトコードを保持し、後でオーバーライドすることができます。

+0

.hファイルを使用してダミー定義をコメントアウトして、代わりにライブラリ定義を取得することをお勧めしますか? – rtmh

+0

それらがどこか他の場所に実装されている場合は、はいです。それ以外の場合は、自分で実装する必要があります。 – Shiro

関連する問題