MRが楽しい

MRやVRについて学習したことを書き残す

MacOSのUnityでARKitを使ったiOSアプリをビルドする その3(Unityプロジェクトの作成とビルド)

本日は iOS アプリの調査枠です。
MacOSのUnityでARKitを使ったiOSアプリをビルドする手順を記事にします。

今回は Unity プロジェクトの作成とビルドです。
f:id:bluebirdofoz:20191201015133j:plain
前回記事の続きです。
bluebirdofoz.hatenablog.com

AR Foundation

今回は ARKit を利用するため、AR Foundation のパッケージを利用します。
AR Foundation は複数の AR デバイスのコア機能を統一したワークフローで利用するためのフレームワークです。
unity.com

AR Foundation は現在バージョン 2.2.0 まで公開されています。
ARKit3 の機能を利用する場合は最新の 2.2.0 を利用する必要があります。

パッケージの取得

最初に AR Foundation のパッケージと ARKit のプラグインを取得します。
Unity プロジェクトが開いたら、メニューから Window -> Package Manager を開きます。
f:id:bluebirdofoz:20191201015202j:plain

パッケージマネージャが起動したら[Advanced]のプルダウンを開き、[Show preview packages]をクリックします。
AR Foundation は preview 版のパッケージであるため、これをチェックしないとパッケージの一覧に表示されません。
f:id:bluebirdofoz:20191201015216j:plain

[Show preview packages]をクリックすると、確認ダイアログが表示されます。
[Yes]をクリックします。
f:id:bluebirdofoz:20191201015225j:plain

以下の2つのパッケージを選択して[Install]を行います。
・ARKit XR Plugin
f:id:bluebirdofoz:20191201015241j:plain

・AR Foundation
f:id:bluebirdofoz:20191201015251j:plain

今回、筆者環境では Unity 2018.4 を利用しました。
Unity 2018.4 では AR Foundation はバージョン 1.5.0 が最新となります。
更に筆者環境では 1.5.0 をインストールしたところエラーが発生したため、今回は両パッケージとも 1.0.0 のバージョンを利用しました。
f:id:bluebirdofoz:20191201015302j:plain

シーンの作成

デフォルトの Main Camera オブジェクトは不要なので、右クリックから[Delete]で削除します。
f:id:bluebirdofoz:20191201015312j:plain

メニューから GameObject -> XR -> AR Session Origin で[AR Session Origin]オブジェクトを追加します。
f:id:bluebirdofoz:20191201015321j:plain

更に GameObject -> XR -> AR Session で[AR Session]オブジェクトを追加します。
f:id:bluebirdofoz:20191201015331j:plain

ポジショントラッキングができていることを確認するため、シーンに Cube を配置します。
Hierarchy 上で右クリックから 3D Object -> Cube で[Cube]オブジェクトをシーンに追加します。
f:id:bluebirdofoz:20191201015339j:plain

以下の通り、[Cube]オブジェクトの[Transform]コンポーネントを設定し、起動時の前方に[Cube]が表示されるようにしました。

Position X:0, Y:0, Z:1.0
Rotation X:0, Y:0, Z:0
Scale    X:0.2, Y:0.2, Z:0.2,

f:id:bluebirdofoz:20191201015348j:plain

プラットフォームの切り替え

iOS にビルドプラットフォームを切り替えます。
メニューから File -> Build Settings.. を開きます。
f:id:bluebirdofoz:20191201015359j:plain

[Build Settings]ダイアログが開きます。
[Add Open Scenes]をクリックして現在のシーンをビルド対象に登録します。
[Platform]の[iOS]を選択して[Switch Platform]を実行します。
f:id:bluebirdofoz:20191201015408j:plain

これでビルド対象にシーンが追加され、プラットフォームが iOS に切り替わりました。
f:id:bluebirdofoz:20191201015418j:plain

プロジェクトの設定

ビルドを行う前に、幾つかのプロジェクト設定を行います。
メニューから Edit -> Project Settings.. を開きます。
f:id:bluebirdofoz:20191201015427j:plain

[Projcect Settings]ダイアログが開きます。
[Player]タブを開き、[iOS] -> [Other Settings]のパネルを開きます。
f:id:bluebirdofoz:20191201015437j:plain

[Bundle Identifier]の設定をデフォルトの[com.Company.ProductName]から変更しておきます。
これがデフォルトの場合、Xcodeのビルドで[Failed to register bundle identifier.]のエラーが発生します。
f:id:bluebirdofoz:20191201015446j:plain

[Camera Usage Description]にカメラ利用の説明文を記述します。
f:id:bluebirdofoz:20191201015455j:plain

[Architecture]を[ARM64]に設定します。
f:id:bluebirdofoz:20191201015508j:plain

これでプロジェクトの設定は完了です。

ビルドの実行

再び[Build Settings]ダイアログを開き、[Build]を実行します。
保存設定のダイアログが表示されるので、[Save As]に出力プロジェクト名を入力します。
[Where]に出力先ディレクトリを指定し、[Save]を実行します。
f:id:bluebirdofoz:20191201015518j:plain

プロジェクトを初めてビルドする場合 link.xml ファイルの作成確認ダイアログが表示されます。
[Yes, fix and build]をクリックすると Assets 直下に link.xml ファイルが作成され、ビルドが実行されます。
f:id:bluebirdofoz:20191201015528j:plain

これで Unity プロジェクトがビルドされました。
出力先のディレクトリに *.xcodeproj ファイルが出力されています。
f:id:bluebirdofoz:20191201015536j:plain

次回は iPad へのインストールです。
bluebirdofoz.hatenablog.com

MacOSのUnityでARKitを使ったiOSアプリをビルドする その2(Unityのインストール)

本日は iOS アプリの調査枠です。
MacOSのUnityでARKitを使ったiOSアプリをビルドする手順を記事にします。

今回は Unity のインストールです。
f:id:bluebirdofoz:20191130220353j:plain
前回記事の続きです。
bluebirdofoz.hatenablog.com

UnityHubのインストール

以下のページから UnityHub のダウンロードを行います。
unity3d.com

[Unity Hub をダウンロード]のリンクをクリックするとインストーラが実行されます。
f:id:bluebirdofoz:20191130220404j:plain

インストールが完了すると、アプリケーションの一覧に UnityHub が追加されます。
f:id:bluebirdofoz:20191130220414j:plain

Unityのインストール

UnityHub を起動します。
[インストール]タブを開き、[インストール]ボタンをクリックします。
f:id:bluebirdofoz:20191130220424j:plain

インストール可能な Unity バージョンの一覧が表示されるので、利用したいバージョンの Unity を選択します。
f:id:bluebirdofoz:20191130220432j:plain

もし一覧に利用したい Unity のバージョンが表示されない場合は以下のアーカイブページを利用します。
unity3d.com

ダウンロードしたいバージョンの[Unity Hub]ボタンをクリックします。
すると UnityHub が起動し、指定の Unity がインストールできます。
f:id:bluebirdofoz:20191130220450j:plain

モジュールの選択画面では iOS アプリのビルドのために[iOS Build Support]のチェックを入れます。
[実行]をクリックすると、指定バージョンの Unity のインストールが開始されます。
f:id:bluebirdofoz:20191130220458j:plain

Unityプロジェクトの作成

UnityHub の[プロジェクト]タブを開きます。
[新規作成]ボタンをクリックして、新規の Unity プロジェクトを作成します。
f:id:bluebirdofoz:20191130220506j:plain

プロジェクト設定画面が開きます。[テンプレート]は[3D]を選択します。
[プロジェクト名]と[保存先]のディレクトリを指定して[作成]をクリックします。
f:id:bluebirdofoz:20191130220514j:plain

次回は Unity プロジェクトの作成を行い、ARKit のサンプルアプリを作成します。
bluebirdofoz.hatenablog.com

MacOSのUnityでARKitを使ったiOSアプリをビルドする その1(Xcodeのインストール)

本日は iOS アプリの調査枠です。
MacOS の Unity で ARKit を使った iOS アプリをビルドする手順を記事にします。

今回は Xcode のインストールです。
f:id:bluebirdofoz:20191129223001j:plain

iOSアプリを作成する手順

Unityを利用して iOS アプリを作成する場合、アプリのビルドとインストールに Xcode を利用します。
XcodeApp Store から取得する必要があり、iOS アプリを開発するには MacOS の開発PCが必要となります。

Xcodeの入手方法

App Store から[xcode]で検索を行い、インストールページを開きます。
[入手]ボタンをクリックします。
f:id:bluebirdofoz:20191129223011j:plain

App Store からアプリを取得するには Apple ID でのサインインが必要です。
ビルド時にも署名の作成で Apple ID が必要となるので、ここで開発用の Apple ID を作成するのも良いです。
Apple ID を作成する場合は[Apple ID を作成]をクリックします。
f:id:bluebirdofoz:20191129223021j:plain

Apple ID の作成

[Apple ID を作成]をクリックすると、最初にメールとパスワードの登録画面が開きます。
登録を行うメールアドレスとパスワードを入力します。このメールアドレスが Apple ID となります。
[地域名]を選択し、利用規約を確認してチェックボックスをチェックします。
[続ける]をクリックします。
f:id:bluebirdofoz:20191129223030j:plain

個人情報の入力画面が開きます。
姓名と生年月日を入力します。情報メールが不要な場合は[Appleからのメールを購読]のチェックを外します。
[続ける]をクリックします。
f:id:bluebirdofoz:20191129223038j:plain

支払方法の入力ページが開きます。
[Xcode]は無料アプリなので、ここでの支払方法は[なし]でも問題ありません。
[続ける]をクリックします。
f:id:bluebirdofoz:20191129223046j:plain

本人確認用の電話番号の入力画面が開きます。
電話番号を入力すると、指定した方法で本人確認のコード番号が届きます。
[コード]を入力し、[続ける]をクリックします。
f:id:bluebirdofoz:20191129223056j:plain

最後に登録したメールアドレスに確認メールが届きます。
受信メールを確認し、[コード]を入力し、[確認]をクリックします。
これで Apple ID の登録は完了です。
f:id:bluebirdofoz:20191129223104j:plain

登録した Apple ID (メールアドレス)とパスワードでサインインを行います。
f:id:bluebirdofoz:20191129223113j:plain

Xcodeの起動

Apple ID でサインインを行い、[インストール]を実行します。
Xcode のインストールが完了したら[開く]をクリックします。
f:id:bluebirdofoz:20191129223122j:plain

初回起動時はライセンス条項の確認画面が表示されます。
ライセンスを確認し、[Agree]をクリックします。
f:id:bluebirdofoz:20191129223132j:plain

以下の画面が開いたら Xcode が正常にインストールされています。
f:id:bluebirdofoz:20191129223140j:plain

次回は Unity のセットアップです。
bluebirdofoz.hatenablog.com

参考ページ

以下のページには更に過去バージョンの Xcode を取得する手順が紹介されています。
fukatsu.tech

Blender2.7とBlender2.8でのPythonAPIの変更点

本日は Blender2.8 の技術調査枠です。
Blender2.7とBlender2.8でのPythonAPIの違いについて記事にします。
f:id:bluebirdofoz:20191128085709j:plain

Blender2.7とBlender2.8で異なるPythonAPI

Blender2.8ではBlender2.7から一部のPythonAPIが変更・削除されています。
APIに関する大きな変更点を以下に列挙します。

アクティブオブジェクトのアクセス

Blender2.8ではアクティブオブジェクトのアクセスにsceneではなくview_layerを利用します。

# 2.7
bpy.context.scene.objects
bpy.context.scene.objects.active

# 2.8
bpy.context.view_layer.objects
bpy.context.view_layer.objects.active

f:id:bluebirdofoz:20191128085719j:plain

オブジェクトリンクにはcollectionからアクセスします。

# 2.7
bpy.context.scene.objects.link(bpy.data.objects["Cube"])

# 2.8
bpy.context.scene.collection.objects.link(bpy.data.objects["Cube"])

f:id:bluebirdofoz:20191128085727j:plain

なお、各コレクションにアクセスする際はcollection.childrenを利用します。

# 2.7
# no exists

# 2.8
bpy.context.scene.collection.children.keys()
bpy.context.scene.collection.children["Collection"].objects

f:id:bluebirdofoz:20191128085736j:plain

選択状態の取得と変更

Blender2.8では選択状態はselect_get()から取得します。
選択状態を変更する際も、直接booleanを代入せず、select_set()で設定します。

# 2.7
bpy.context.object.select
bpy.context.object.select = True
bpy.context.object.select = False

# 2.8
bpy.context.object.select_get()
bpy.context.object.select_set(True)
bpy.context.object.select_set(False)

f:id:bluebirdofoz:20191128085745j:plain

表示状態の取得と変更

Blender2.8では表示状態はhide_get()から取得します。
表示状態を変更するは直接booleanを代入せず、hide_set()で設定します。
ただしオブジェクトが表示状態でもコレクションが非表示だとオブジェクトは見えません。

# 2.7
bpy.context.object.hide
bpy.context.object.hide = True

# 2.8
bpy.context.object.hide_get()
bpy.context.object.hide_set(True)

f:id:bluebirdofoz:20191128085754j:plain

また、Blender2.8では表示状態をvisible_get()からも取得できます。
これを使うとコレクションを考慮した表示状態の取得が行えます。
表示時 True となり、hideと正否が逆転する点に留意が必要です。

# 2.7
bpy.context.object.hide

# 2.8
not bpy.context.object.visible_get()

f:id:bluebirdofoz:20191128085803j:plain

レイヤー機能

Blender2.8ではレイヤーは削除されました。
レイヤーに相当する役割はコレクションが担います。

# 2.7
bpy.context.scene.layers

# 2.8
# no exists

f:id:bluebirdofoz:20191128090433j:plain

ユーザー設定

Blender2.8ではユーザー設定はpreferencesでアクセスします。

# 2.7
bpy.context.user_preferences

# 2.8
bpy.context.preferences

f:id:bluebirdofoz:20191128090443j:plain

APIでキーワード引数の必須化

Blender2.8 では一部のAPIでキーワード引数が必須になっています。

# 2.7
bpy.context.scene.frame_set(10, 0.25)

# 2.8
bpy.context.scene.frame_set(10, subframe=0.25)

f:id:bluebirdofoz:20191128090452j:plain

AzureKinectSDKのサンプルプログラムをPythonの拡張モジュールとしてインストールする その2(拡張モジュールのインストールと実行確認)

本日は AzureKinectSDK の技術調査枠です。
AzureKinectSDKのサンプルプログラムをPythonの拡張モジュールとしてインストールする一例を記事にします。
f:id:bluebirdofoz:20191127093217j:plain

今回は拡張モジュールのインストールと実行確認です。
前回記事の続きです。
bluebirdofoz.hatenablog.com

kinect_captureのインストール

ビルドした pyd ファイルを Python にインストールします。
インストールディレクトリを整理したいので、今回は以下のインストール作業を手動で行いました。

1.Python ディレクトリの Lib\site-packages 配下に kinect_capture ディレクトリを作成する。
f:id:bluebirdofoz:20191127093259j:plain

2.Lib\site-packages 配下に kinect_capture ディレクトリへのパスを記述する kinect_capture.pth ファイルを作成する。
f:id:bluebirdofoz:20191127093309j:plain

3.kinect_capture.pth ファイルに以下の通り、kinect_capture ディレクトリへのパスを記述する。

kinect_capture

f:id:bluebirdofoz:20191127093318j:plain

4.kinect_capture ディレクトリに kinect_capture.cp37-win_amd64.pyd ファイルをコピーする。
f:id:bluebirdofoz:20191127093328j:plain

5.kinect_capture ディレクトリに以下の AzureKinectSDK の2つの *.dll ファイルをコピーする。
・コピー元

C:\Program Files\Azure Kinect SDK v1.3.0\sdk\windows-desktop\amd64\release\bin\k4a.dll
C:\Program Files\Azure Kinect SDK v1.3.0\sdk\windows-desktop\amd64\release\bin\depthengine_2_0.dll

f:id:bluebirdofoz:20191127093337j:plain

6.kinect_capture ディレクトリに以下の turbojpeg の *.lib ファイルをコピーする。
・コピー元

C:\libjpeg-turbo64\lib\turbojpeg.lib

f:id:bluebirdofoz:20191127093348j:plain

これで Python へのインストールは完了です。

kinect_captureの動作確認

事前にAzureKinectをPCに接続してビューアから認識できることを確認しておきます。
f:id:bluebirdofoz:20191127093439j:plain

kinect_capture を組み込んだ Python ディレクトリの python.exe を起動し、以下のコマンドを実行してみます。

import kinect_capture
print(kinect_capture)

kinect_capture.cp37-win_amd64.pyd の参照パスが表示されれば kinect_capture のインポートに成功しています。

module 'kinect_capture' from '(参照パス)\lib\site-packages\kinect_capture\kinect_capture.cp37-win_amd64.pyd'

f:id:bluebirdofoz:20191127093400j:plain

実際に capture() 関数を実行してみます。
引数を渡さず関数を実行するとカレントディレクトリに ply ファイルが出力されます。
戻り値 0 が返れば、実行が成功しています。

kinect_capture.capture()

f:id:bluebirdofoz:20191127093410j:plain

python.exe を実行中のカレントディレクトリを確認します。
以下の3つのファイルが出力されています。
・color_to_depth.ply
・depth_to_color.ply
・depth_to_color_downscaled.ply
f:id:bluebirdofoz:20191127093420j:plain

MeshLab などを利用して ply ファイルを開いてみます。
以下の通り、点群がキャプチャされていれば成功です。
f:id:bluebirdofoz:20191127093430j:plain

AzureKinectSDKのサンプルプログラムをPythonの拡張モジュールとしてインストールする その1(拡張モジュールの作成とビルド)

本日は AzureKinectSDK の技術調査枠です。
AzureKinectSDKのサンプルプログラムをPythonの拡張モジュールとしてインストールする一例を記事にします。
f:id:bluebirdofoz:20191126094214j:plain

今回は拡張モジュールの作成とビルド手順です。

対象とするサンプルプログラム

今回は AzureKinectSDK の sample に含まれる transformation のキャプチャ機能をモジュール化します。
github.com

transformation は AzureKinect のキャプチャや記録データから点群データ(*.ply)ファイルを出力サンプルプログラムです。
今回は本コードを利用して点群データのキャプチャ機能を Python のモジュールとしてインストールします。
f:id:bluebirdofoz:20191126094203j:plain

必要な環境とファイル

事前に以下のツールのインストールとファイルの取得を行います。
・AzureKinectSDK
・libjpeg-turbo
・AzureKinectSDKのソースコード

以下の記事に従ってツールのインストールを実施します。
bluebirdofoz.hatenablog.com
bluebirdofoz.hatenablog.com
github.com

[Download ZIP]からソースコードがダウンロードできます。
今回、必要となるのは examples/transformation/ 配下のファイルだけです。
f:id:bluebirdofoz:20191126094254j:plain

拡張モジュール用コードの作成

examples/transformation/ 配下の以下のソースコードを利用します。
・main.cpp
・transformation_helpers.cpp
・transformation_helpers.h
これらを作業用ディレクトリにコピーします。
f:id:bluebirdofoz:20191126094332j:plain

main.cpp を改変し、以下の kinect_capture.cpp ファイルを作成しました。
main 関数を Python の拡張モジュールとして登録する関数に置き換えています。
kinect_capture.cpp

これで拡張モジュール kinect_capture を定義する kinect_capture.cpp が作成できました。
更に、作業ディレクトリにビルド設定を記述する setup.py も作成します。
f:id:bluebirdofoz:20191126094350j:plain

transformation のサンプルを利用する場合、k4a の他、libjpeg-turbo のライブラリの参照を追加する必要があります。
以下の通り、setup.py を記述しました。
・setup.py

from distutils.core import setup, Extension

setup(
    name="kinect_capture",        # モジュールの名前
    version="1.0.0",              # モジュールのバージョン
    author="holomon",             # モジュールの作者
    url="",                       # モジュールのホームページ
    description="description",    # モジュールの説明(help(hello)で確認可能)
    install_requires=[],          # 依存パッケージ([pip install -e .]実行時に一緒にインストール)
    extras_require={
        "develop" : [],           # 拡張依存パッケージ([pip install -e . develop]実行時に一緒にインストール)
    },
    ext_modules=[                 # モジュールのソース
        Extension(
            # モジュールの名前
            'kinect_capture',
            # モジュールの外部参照ライブラリ名
            libraries= ['k4a', 'turbojpeg-static'],
            # モジュールのソースコードファイル名
            sources= ['kinect_capture.cpp', 'transformation_helpers.cpp'])
    ]
)

これでコードの作成は完了しました。
次はビルド環境の準備を進めます。

Includeファイルのコピー

今回のソースコードは k4a/k4a.h と turbojpeg.h のヘッダファイルを参照しています。
最初にこれらのヘッダファイルを Python の include ディレクトリに追加し、参照を追加します。

以下の k4a.h のヘッダファイルを含む k4a ディレクトリを Python 配下の include ディレクトリにコピーします。
・コピー元

C:\Program Files\Azure Kinect SDK v1.3.0\sdk\include\k4a

・コピー先

C:\Users\(ユーザ名)\AppData\Local\Programs\Python\Python37\include

f:id:bluebirdofoz:20191126094417j:plain

turbojpeg.h のヘッダファイルも同様に Python 配下の include ディレクトリにコピーします。
・コピー元

C:\libjpeg-turbo64\include\turbojpeg.h

・コピー先

C:\Users\(ユーザ名)\AppData\Local\Programs\Python\Python37\include

f:id:bluebirdofoz:20191126094426j:plain

Libファイルのコピー

次にライブラリファイルを Python の libs ディレクトリに追加し、ライブラリへの参照を追加します。
以下の k4a.lib のライブラリファイルを Python 配下の lib ディレクトリにコピーします。
・コピー元

C:\Program Files\Azure Kinect SDK v1.3.0\sdk\windows-desktop\amd64\release\lib\k4a.lib

・コピー先

C:\Users\(ユーザ名)\AppData\Local\Programs\Python\Python37\libs

f:id:bluebirdofoz:20191126094437j:plain

turbojpeg のライブラリファイルも同様に Python 配下の libs ディレクトリにコピーします。
turbojpeg-static.lib ファイルがスタティックリンクライブラリになります。
・コピー元

C:\libjpeg-turbo64\lib\turbojpeg-static.lib

・コピー先

C:\Users\(ユーザ名)\AppData\Local\Programs\Python\Python37\libs

f:id:bluebirdofoz:20191126094446j:plain

kinect_captureのビルド

これで kinect_capture のビルドの準備が整いました。
作業用ディレクトリを開き、右クリックから[PowerShellウィンドウをここに開く]を実行します。
f:id:bluebirdofoz:20191126094457j:plain

以下のコマンドを実行し、kinect_capture のビルドを実行します。

python .\setup.py build

f:id:bluebirdofoz:20191126094507j:plain

ビルドが成功すると、build ディレクトリが生成され、kinect_capture.cp37-win_amd64.pyd ファイルが出力されます。
cp37-win_amd64 の部分はビルド環境の情報が反映されます。
f:id:bluebirdofoz:20191126094516j:plain

これで kinect_capture のビルドは完了です。
次回は kinect_capture のインストールと実行確認を行います。
bluebirdofoz.hatenablog.com

libjpeg-turboの環境構築

本日は環境構築枠です。
libjpeg-turbo のインストール手順を記事にします。
f:id:bluebirdofoz:20191125090242j:plain

本記事は Windows 64bit 環境へのインストール手順になります。

libjpeg-turboとは

ibjpeg-Turboは、libjpeg/SIMD を用いた高速なJPEG圧縮・展開ライブラリです。
対応アーキテクチャx86およびx86-64、ARM、PowerPCで、libjpegよりも2~6倍高速です。
libjpeg-turbo.org

インストーラの取得

インストーラは以下の sourceforge のページから取得します。
sourceforge.net

最新の[2.0.3]バージョンを選択します。
f:id:bluebirdofoz:20191125090314j:plain

環境ごとのインストーラの一覧が開きます。
インストール先が Windows 64bit 環境であれば libjpeg-turbo-2.0.3-vc64.exe のインストーラを取得します。
f:id:bluebirdofoz:20191125090325j:plain

libjpeg-turboのインストール

ダウンロードした libjpeg-turbo-2.0.3-vc64.exe を実行します。
f:id:bluebirdofoz:20191125090336j:plain

インストーラが起動します。
展開先のディレクトリを[Destination Folder]に指定し、[Next]をクリックします。
f:id:bluebirdofoz:20191125090346j:plain

これで libjpeg-turbo がインストールされました。
f:id:bluebirdofoz:20191125090359j:plain

指定したディレクトリに libjpeg-turbo64 フォルダがインストールされています。
各フォルダには以下のファイルが含まれます。
・bin : *.exe の実行ファイル
・classes : *.jar のアーカイブファイル
・doc : ドキュメントファイル群
・include : *.h のヘッダファイル
・lib : *.lib のライブラリファイル
f:id:bluebirdofoz:20191125090410j:plain

ライブラリファイルは *.lib がダイナミックリンクライブラリ(DLL)、*-static.lib がスタティックリンクライブラリになります。
f:id:bluebirdofoz:20191125090420j:plain