1

私は不平を言うエラーに遭遇しました:error: expected initializer before ‘:’ token

だから私はコードをチェックしに行きました、それは以下のようにいくつかの行を持っています、

class VTK_IO_EXPORT vtkPFReader
:
    public vtkMultiBlockDataSetAlgorithm
{blahblah...}

の定義について知りたいのですclass VTK_IO_EXPORT vtkPFReaderが、名のVTK_IO_EXPORT意味を教えてください。を削除するとVTK_IO_EXPORT、エラーは発生しませんが、他のエラーが発生することがわかりました。私は何をすべきか?どうもありがとう

4

5 に答える 5

7

VTK_IO_EXPORTプリプロセッサ マクロです。Windows 以外のすべてのプラットフォームでは空白です。

Windows では、はまたはとしてVTK_IO_EXPORT 定義されており、どちらも非標準の Microsoft 拡張機能です。__declspec( dllexport )__declspec( dllimport )

エラーが発生し、削除すると修正されるという事実は、 Linux でビルドしているにもかかわらずVTK_IO_EXPORT、何らかの理由でWIN32定義したことを示唆しています。なぜこれが起こっているのかを理解する必要があります。

于 2013-01-25T19:52:26.970 に答える
4

VTK_IO_EXPORT は、おそらく属性用のマクロです。それが定義されている場所を見つけて、物事をより明確にする必要があります(または少なくともグーグルで簡単に)

于 2013-01-25T19:53:05.657 に答える
3

VTK_IO_EXPORTすべて大文字であるという事実は、それがマクロであることを示しています。通常、ライブラリはその場所に「エクスポート」マクロを貼り付けて、Windowsで、Windows DLLにインターフェイスをエクスポートするために、その場所に挿入__declspec(dllexport)またはその場所に配置できるようにします。__declspec(dllimport)

ビルドシステムがこのマクロを正しく定義していない可能性があるため、エラーが発生します。マクロが定義されているはずの場所を確認し、ビルド内の何かが正しく構成されていない場所が見つかるまで逆方向にトレースする必要があります。

于 2013-01-25T19:54:00.083 に答える
1

これは、マクロで囲まれたMSVC拡張機能です。

#if defined(vtkIO_EXPORTS)
 #define VTK_IO_EXPORT __declspec( dllexport ) 
#else
 #define VTK_IO_EXPORT __declspec( dllimport ) 
#endif

上記の定義またはインクルードを使用して解決しvtkWin32Header.hます。配布パッケージで取得できます。

于 2013-01-25T19:53:54.530 に答える
1

どうやらVTK_IO_EXPORTマクロです。しかもマクロなので何でもいいです。空白だけでもかまいません。

ですから、それが何を意味するのかを教えてくれるのは、本当にあなたです。コード内のそのマクロの定義を調べて、それが何に置き換えられているかを確認してください。

于 2013-01-25T19:53:30.880 に答える