ページ

2014年2月10日月曜日

Intel Perceptual Computing SDKのutil_capture.hでのビルドエラー

Point Cloud Library (PCL) 1.7.1経由でSenz3Dから取得した点群データを描画するアプリケーションを開発しています。
PCL 1.7.1は内部でIntel Perceptual Computing SDK (PerC SDK)を利用しており、\sample\common\include\util_capture.hにも依存関係を持っています。

Visual Studioで自前のプロジェクトを作成してプログラムを作成していたのですが、どうやらVisual Studioでプロジェクトを作成するときに、「Win32コンソールアプリケーション」や「Win32プロジェクト」を選択しない場合にはutil_capture.hで以下の様なエラーが発生するようです。

error C2664: 'errno_t wcscpy_s<256>(wchar_t (&)[256],const wchar_t *) throw()' : 1 番目の引数を 'pxcCHAR [256]' から 'wchar_t (&)[256]' に変換できません。

どうやら、これはpxcCHARの型がwchar_tになっていないことが問題のようです。pxcCHAR型はpxcdefs.hに以下のようにtypedefされています。

#if defined (WIN32) || defined(WIN64) || defined(WINAPI_FAMILY)
#include <wchar.h>
typedef wchar_t pxcCHAR;
#else
typedef char pxcCHAR;
#endif

これを見るとわかるように、WIN32やWIN64が定義されていない場合にはpxcCHARがchar型となってしまうようです。同様のエラーがintelのフォーラムにも投稿されていて、そこでもWIN64の定義が問題になっています。

この問題を解決するために、プロジェクトのプロパティから「構成プロパティ > C/C++ > プリプロセッサ > プリプロセッサの定義」にWIN32を追加したところ、問題は解決しました。同様のエラーに悩まされた時はプリプロセッサ定義を確認してみると良いかもしれないです。

0 件のコメント:

コメントを投稿