0

このクラス定義は .h ファイルにあり、実装は .cpp ファイルにあります。これをコンパイルしようとすると、ヘッダー ファイルにいくつかのエラーと警告が表示されます。

    /home/don/BerthaApex/apex/src/lib/apexmain/apexloader.h:6: error: variable 'APEX_EXPORT ApexLoader' has initializer but incomplete type
 class APEX_EXPORT ApexLoader
                   ^
    /home/don/BerthaApex/apex/src/lib/apexmain/apexloader.h:6: warning: extended initializer lists only available with -std=c++11 or -std=gnu++11 [enabled by default]
    /home/don/BerthaApex/apex/src/lib/apexmain/apexloader.h:9: error: expected primary-expression before 'public'
 public:

このエラーが発生するコードは次のとおりです。

#ifndef _APEXLOADER_H
#define _APEXLOADER_H

#include "global.h"

class APEX_EXPORT ApexLoader
{

public:
    int Load( int argc, char *argv[]);

};

#endif

「class APEX_EXPORT ApexLoader」がエラーと警告のある行です。

APEX_EXPORT は、この同じファイルからインクルードされるヘッダー ファイルで定義されます。

編集: APEX_EXPORT は「global.h」で次のように定義されています。

#ifdef APEX_MAKEDLL
    #define APEX_EXPORT APEX_EXPORT_DECL
#else
    #define APEX_EXPORT APEX_IMPORT_DECL
#endif

なぜこれらのエラーがあるのか​​ 誰にも分かりますか?そして、どうすればそれらを取り除くことができますか? 前もって感謝します!

コンパイラ: gcc 4.8.4 OS: Ubuntu 14.04

4

1 に答える 1

9

私の精神的なデバッグスキルは、それが d でAPEX_EXPORTはない#defineことを示しているため、コンパイラは、その型の変数を宣言しようとしていると考えています。

適切なヘッダーをすべてインクルードしたと思われる場合は、ソース ファイルに対してプリプロセッサを実行し、生成されるものを確認するのが最善の方法です (たとえば、g++ -E.

于 2015-09-01T14:50:56.473 に答える