#1.はじめに
ダイナミックライブラリといえば、WindowsはDLL、Linuxだとsoという拡張子ですが、MacOSではdylibがそれにあたります。さて、今回なぜこのダイナミックライブラリについて記述したかというと、実は、UnityでC++のコードを呼び出したいと考えており、UnityでC#のスクリプトからC++を呼び出すにはC++をダイナミックライブラリに変換して呼び出すという形をとらないといけないらしく、そのために今回調べたのでここでまとめておきたいと思っています。
#2.まずはdylib化するC++のコード
今回はdylib化するのが目的なので、C++のコードで実行する内容は『Hello,World!』と出力するプログラムを作成したいと思います。
#include<iostream>
#include<stdio.h>
using namespace std;
int hello(){
cout<<"Hello,World!"<<endl;
}
####ちょっと雑談。
実は、最近Pythonでばっかりコードを書いていたので、今回久しぶりにC++のコードを書いたらusing namespace std;
のところを書いていなかったり、書いてもスペルミスしたり、セミコロンを忘れたりして、今までなら時間を全くとられなかったところで時間をとられてしまいました...
いや、コードはできるだけ毎日書かないといけないっと感じました(^^:)
はい、くだらない話は置いといて次ぎにいきたいと思います←
#3.コンパイル
実は、今回このコンパイルをするのにすごく時間をとられてしまいました。『[mac]Macでsoじゃなくてdylibだった』というブログでC++のファイルを
gcc -dynamiclib -o test.dylib ./test.cpp
でdylib化できたと書いてあったので、実行したのが戦いの幕開けでした。
結果は、大量のErrorが返ってくるという...
gcc
のバージョンが悪いのかと思ってアップグレードしたり、アンインストールして再度インストールしたりしたのですができなくて悩みに悩んでたら、cppのファイルはgcc
ではなく、g++
で行うという記事がいくつかヒット...
だけど、gcc
でできるはず!っと何故か意固地になって実行し続けて数時間後、あきらめてg++
で実行したら今までの苦労が嘘かのようにささっとできてしまいました(^^:)
そのコマンドはこちら↓
$ g++ -dynamiclib -o hello.dylib ./hello.cpp
#4.備考
『#1.はじめに』のところで書いたのですが、UnityでC++を実行するにはまだ道のりがあるのですが、それはまた次の投稿で書きたいと思います。