0

私はQuickFAST自分のプロジェクトで使用しています。コンパイルしようとすると、 で多くのコンパイル時エラーが発生しQuickFASTます。しかし、QuickFASTコードは有効であることが保証されています (そして、コードを個別に開くと、コンパイルできます)。

有効なコードでこのコンパイル時エラーが表示されるのはなぜですか?また、その修正方法は?

typedef boost::shared_ptr<ValueMessageBuilder> ValueMessageBuilderPtr;

Error   3   error C4430: missing type specifier - int assumed. Note: C++ does not support default-int   e:\quickfast\quickfast_1_4_0\src\messages\ValueMessageBuilder_fwd.h 14  1   FastNativeAdapter

typedef boost::uint16_t uint16;

Error   15  error C4430: missing type specifier - int assumed. Note: C++ does not support default-int   E:\quickfast\quickfast_1_4_0\src\Common\Types.h 23  1   FastNativeAdapter

typedef boost::shared_ptr<ValueMessageBuilder> ValueMessageBuilderPtr;

Error   1   error C2653: 'boost' : is not a class or namespace name e:\quickfast\quickfast_1_4_0\src\messages\ValueMessageBuilder_fwd.h 14  1   FastNativeAdapter


void setValue(const uint64 value)

Error   255 error C2535: 'void QuickFAST::Value::setValue(const int)' : member function already defined or declared E:\quickfast\quickfast_1_4_0\src\Common\Value.h 99  1   FastNativeAdapter


virtual void addValue(FieldIdentityCPtr & identity, ValueType::Type type, const uint64 value) = 0;

Error   45  error C2535: 'void QuickFAST::Messages::ValueMessageBuilder::addValue(QuickFAST::Messages::FieldIdentityCPtr &,QuickFAST::ValueType::Type,const int)' : member function already defined or declared E:\quickfast\quickfast_1_4_0\src\Messages\ValueMessageBuilder.h 42  1   FastNativeAdapter

void setValue(const int8 value)
{
  class_ = SIGNEDINTEGER;
  cachedString_ = false;
  signedInteger_ = value;
}

Error   310 error C2065: 'value' : undeclared identifier    E:\quickfast\quickfast_1_4_0\src\Common\Value.h 147 1   FastNativeAdapter

boostinclude ファイルと lib ファイルがプロジェクトに追加されます。

更新:

QuickFASTそのように file を含めるだけで十分であることがわかりました#include "Messages/ValueMessageBuilder.h"QuickFASTその後、クラスをインスタンス化または使用しないという事実にもかかわらず、上記のコンパイルエラーを受け取ります。

削除するとエラーが消えます(プログラム全体でファイル#include "Messages/ValueMessageBuilder.h"を参照することはないため.QuickFAST

つまり、ファイルをインクルードするだけで十分です。おそらくどういうわけかQuickFAST、ソースが私のプロジェクトに間違ってリンクされていますか? プロジェクトのプロパティにインクルード ファイルと lib ファイルを追加しました...

4

1 に答える 1

0

QuickFAST の FAQ でそれを発見し、それが役立ちました:

これを解決するには、ほとんどのアプリケーションを$QUICKFAST_HOME/srcインクルード ディレクトリとして設定し、他の QuickFAST ヘッダーをインクルードする前にインクルードする必要があります。<Application/QuickFAST.h>プリコンパイル済みヘッダーを使用するアプリケーションは、プリコンパイル済みヘッダー ファイルにこのヘッダーを含める必要があります。

Application/QuickFAST.h他のインクルードの前にインクルードする必要があります。

于 2013-04-16T11:48:03.280 に答える