Help us understand the problem. What is going on with this article?

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

More than 1 year has 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)の場合以外は弾かれるようになっています。このため、_MSCVERが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より)ので、問題はないようです。

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
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  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
ユーザーは見つかりませんでした