Qt 5.1 configure KMS 機能テスト (qtbase/config.tests/qpa/kms) に基づいて単純な C++ テスト アプリケーションを作成しようとしていますが、失敗しています。アプリケーションは、以下に示すように非常に単純です。
#include <stdlib.h>
extern "C" {
#include <gbm.h>
#include <xf86drmMode.h>
#include "xf86drm.h"
}
#include <EGL/egl.h>
#include <GLES2/gl2.h>
int main(int, char **)
{
// Check for gbm_surface which is quite a recent addition.
gbm_surface *surface = 0;
return 0;
}
問題は、「libdrm/xf86drmMode.h」または「libdrm/xf86drm.h」をインクルードすると、「drm/drm.h」もインクルードされることです。「drm.h」内には、次のように定義された構造があります。
struct drm_buf_map {
int count; /**< Length of the buffer list */
void *virtual; /**< Mmap'd area in user-virtual */
struct drm_buf_pub *list; /**< Buffer information */
};
drm_buf_map 構造体内の「virtual」という名前の変数に注意してください。これにより、extern "C" を使用して解決できない C++ コンパイラ エラーが発生します。これは理にかなっていますが、この問題を解決する方法がわかりません (C コンパイラを使用する以外に)。これを処理するコンパイラ フラグはありますか?
ありがとう!