17
17

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

c++ファイルのダイナミックライブラリdylibの作り方

Posted at

#1.はじめに
ダイナミックライブラリといえば、WindowsはDLL、Linuxだとsoという拡張子ですが、MacOSではdylibがそれにあたります。さて、今回なぜこのダイナミックライブラリについて記述したかというと、実は、UnityでC++のコードを呼び出したいと考えており、UnityでC#のスクリプトからC++を呼び出すにはC++をダイナミックライブラリに変換して呼び出すという形をとらないといけないらしく、そのために今回調べたのでここでまとめておきたいと思っています。

#2.まずはdylib化するC++のコード
今回はdylib化するのが目的なので、C++のコードで実行する内容は『Hello,World!』と出力するプログラムを作成したいと思います。

hello.cpp
#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++を実行するにはまだ道のりがあるのですが、それはまた次の投稿で書きたいと思います。

17
17
0

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
17
17

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?