Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
4
Help us understand the problem. What is going on with this article?
@CdecPGL

Effekseer1.22 For DXライブラリをVisual Studio 2017で使う

More than 3 years have passed since last update.

概要

パーティクルエフェクトを作成しゲーム内で使用できる便利なツールに「Effekseer」というものがあります。Effekseerで作成したエフェクトはDirectXやOpenGLによりゲーム内で再生でき、DXライブラリ用のライブラリ「Effekseer For DXライブラリ」を使えばDXライブラリを用いたゲーム内でもEffekseerで作成したエフェクトを再生することができます。

しかし、本記事投稿時点でEffekseer For DXライブラリの最新バージョン1.22が対応するコンパイラはVisual Studio 2015(MSVC14.0)までとなっており、Visual Studio 2017(MSVC14.1)では使用することができません。

そこで、本記事ではVisual Studio 2017(以下VS2017)でEffekseer1.22 For DXLibを使用する方法を説明していこうと思います。DXライブラリやEffekseer1.22 For DXライブラリの導入方法はここでは説明しないのでご了承ください。

問題と解決法

Effekseer For DXライブラリでは、#pragma commentを用いてリンクするlibファイルを指定しています。リンクするlibファイルはMSVCのバージョンによって異なり、バージョンの判定部分で_MSC_VERが1700(VS2012)、1800(VS2013)、1900(VS2015)の場合以外は弾かれるようになっています。このため、_MSC_VERが1910であるVS2017ではlibファイルがリンクされず、リンク時にエラーが発生してしまいます。

このバージョン判定はEffekseerForDXLib.h内で行われており、同ファイルの16行目と56行目にある

変更前
#if _MSC_VER ==1900

変更後
#if _MSC_VER >=1900

とすることで、VS2017使用時にもlibファイルがリンクされ正常に動くようになります。

ちなみに、この方法ではVS2015向けにビルドされたlibファイルをVS2017でビルドしたファイルとリンクすることになるので問題が発生するのではないかと思うかもしれませんが、VS2017はVS2015とバイナリ互換である(Visual C++ Team Blogyより)ので、問題はないようです。

4
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
CdecPGL
主にUnityでゲームを制作しています。 ひっそりとDXライブラリ&C++でもゲームを制作しています。 使っている言語はC#、Python、C++
unity-game-dev-guild
趣味・仕事問わずUnityでゲームを作っている開発者のみで構成されるオンラインコミュニティです。Unityでゲームを開発・運用するにあたって必要なあらゆる知見を共有することを目的とします。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
4
Help us understand the problem. What is going on with this article?