1

わかりましたので、gstreamer ライブラリを使用したいと思います。

1.状況

私はいくつかのコードを持っています:

#include <gst/gstpipeline.h>
#include <gst/gst.h>
...
GstElement* pipe = gst_pipeline_new("PipeName");

gstpipeline.hgst_pipeline_newで宣言されている場所:

GstElement* gst_pipeline_new (const gchar* name) G_GNUC_MALLOC;

ここで、明白でない「もの」:) はシステムのどこかに定義されています。

typedef struct _GstElement GstElement;             // gstelement.h
typedef char   gchar;                              // gtypes.h
#define G_GNUC_MALLOC  __attribute__((__malloc__)) // gmacros.h

2.問題

ビルドにmakeを使用しているため、コンパイルおよびリンク中にエラーは発生しません。プログラム自体も正常に動作します。ただし... Eclipse IDEには次のエラーがあります:

Description Resource Path Location Type
Invalid arguments '
Candidates are:
_GstElement * gst_pipeline_new(const ? *)
' file.cc /path/to/file line 106 Semantic Error

Makefile で指定されているすべてのインクルード ディレクトリを eclipse プロジェクト構成に追加しました ([プロジェクト] -> [プロパティ] -> [C/C++ 一般] -> [パスとシンボル] -> [インクルード] -> [C++])。もちろん、これは C++ プロジェクトです。

3. 質問

そのEclipseエラーを取り除く方法は? これを行う方法がわかりません...そして、今ではレガシーコードを使用しており、このようなエラーが約100あるため、気が狂います。

これまでのところ、私は試しました:

  • reinterpret_cast<>()または C のようなキャストによるキャストconst gchar*
  • ファイルの先頭に追加typedef char gcharします-他のインクルードの前に!
  • 含むgtypes.h(gcharはそこで定義されています) - 他のインクルードの前にも
  • `_GstElement gst_pipeline_new(const gchar* name)' の再宣言

それらのどれも助けませんでした...

私には、Eclipse が型を認識していないように見えます。gcharこれは、候補が実際の型を代用する_GstElement * gst_pipeline_new(const ? *)場所であると言っているからです。?しかし、それを見るためにEclipseを作成する方法(またはイベント強制:))がわかりません...

4

2 に答える 2

2

ほとんどの場合、Eclipse はインクルード パス (この特定のライブラリの場合) を認識しておらず、インデックスのない型と宣言について不平を言っています。

「プロジェクト->プロパティ->C++ 一般->パスとシンボル」の下に追加できます。

これで問題が解決しない場合は、セマンティック エラー チェック (「コード分析」を参照) を全体または特定のエラー タイプに対してオフにすることもできます。

于 2013-11-22T10:53:34.280 に答える
1

g-maulik が示唆したように、それは本当にインデクサーの問題だったようです。インデクサーのキャッシュ制限を増やした後、すべてが正常に機能します。

[ウィンドウ] -> [設定] -> [C/C++] -> [インデクサー] タブのキャッシュ制限に移動し、増やします (マシンに依存する可能性があります):

Index Database cache:
Limit relative to the maximum heap size: 15%
Absolute limit: 128 MB

Header file cache:
Absolute Limit: 128 MB
于 2013-11-25T15:10:58.510 に答える