C++でプログラミングを始めたばかりで、同じコード(ほとんどはユーティリティ関数)を何度も何度も書く必要があることに気付きました。
そこで、共有ライブラリを作成してPATHにインストールし、必要なときにいつでもユーティリティ関数を使用できるようにしています。
これが私がこれまでに行ったことです:-
次の内容でファイルutils.h
を作成します:-
#include<iostream>
#include<string>
std::string to_binary(int x);
以下の内容でファイルutils.cpp
を作成します:-
#include "utils.h"
std::string to_binary(int x) {
std::string binary = "";
while ( x > 0 ) {
if ( x & 1 ) binary += "1";
else binary += "0";
x >>= 1;
}
return binary;
}
ここに記載されている手順に従ってください:- http://www.techytalk.info/c-cplusplus-library-programming-on-linux-part-two-dynamic-libraries/
g++ -Wall -fPIC -c utils.cpp
しかし、上記のリンクはLinux向けであるため、OSXでは実際には機能しません。誰かがリソースを読んだり、OSXマシンのパスにあるオブジェクトをコンパイルして設定する方法についてのヒントを提案したりできますか?
また、これをクロスプラットフォームで作成する方法(つまり、一連の指示(bashスクリプト)またはMakefile)を作成して、プラットフォーム間でこれを簡単にコンパイルできるようにする必要があると思います。何かヒントはありますか?
使用する -dynamiclib
OS Xで動的ライブラリをコンパイルするオプション:
g++ -dynamiclib -o libutils.dylib utils.cpp
そして、それをクライアントアプリケーションで使用します。
g++ client.cpp -L/dir/ -lutils
あなたが投稿したリンクはCとCコンパイラを使用しています。 C++をビルドしているので:
g++ -shared -o libYourLibraryName.so utils.o