LoginSignup
5
2

More than 3 years have passed since last update.

UnrealC++のマクロ多重定義の回避方法

Last updated at Posted at 2019-07-02

はじめに

現在、卒業研究でKinect V2とUE4を連携させるシステムを作成しています。その過程で発生したビルドエラーの解決方法についての日本語の記事を見かけなかったので、備忘録も兼ねて記事を書いてみます。

エラーの内容

Kinect V2との連携システムを作るにあたって、KinectのライブラリをUE4のプロジェクトに追加する必要があります。
ライブラリの追加については問題なかったのですが、ビルドする時にエラーが発生しました。

キャプチャ.PNG

内容は「TEXT」というマクロが多重定義されているとのこと。
おそらくKinectが使用しているWindowsのライブラリ(winnt.h / winioctl.h)とUE4のエンジンの中で「TEXT」というマクロが定義されているという状態かと思います。

解決方法

bEnableUndefinedIdentifierWarnings = false;

このコードを<プロジェクト名>.Build.csの中に加えるだけです。

----- 追記 -----
上記の方法だと、全体に対して効果がありますが以下の方法を使うと一部のヘッダーのみに作用させることができます。

別の手法
#include "AllowWindowsPlatformTypes.h"

 //対象のヘッダーまたはそれを含むヘッダーをインクルード

#include "HideWindowsPlatformTypes.h"

コメント欄にて strv13570 様に教えていただきました!ありがとうございます!

こちらの方法で解決できない場合は以下の記事の方法をお試しください。
UE4のTEXTマクロ多重定義回避 @Kanashibari

おわりに

こう書いてみるとたった1行のコードを書くだけですが、ここにたどり着くまで一週間悩んでましたw
英語のフォーラムも見ることの重要性を感じましたが、やはり日本語の検索でヒットした方が便利ですよね!

私自身、UnrealC++を触り始めたばかりなのでこの記事で間違っているところがあれば教えていただけると幸いです。

5
2
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
2