18

私は 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 を作成する方法) が必要であると推測しています。それに関するヒントはありますか?

4

2 に答える 2

33

オプションを使用-dynamiclibして、OS X で動的ライブラリをコンパイルします。

g++ -dynamiclib -o libutils.dylib utils.cpp

そして、それをクライアント アプリケーションで使用します。

g++ client.cpp -L/dir/ -lutils
于 2013-01-09T07:35:06.413 に答える
11

投稿したリンクは、C と C コンパイラを使用しています。あなたはC++を構築しているので:

g++ -shared -o libYourLibraryName.so utils.o
于 2013-01-05T17:01:02.913 に答える