Po prostu zacząłem programowanie w C++ i zdałem sobie sprawę, że musiałem wielokrotnie pisać ten sam kod (głównie funkcje narzędziowe).Tworzenie bibliotek współdzielonych w C++ dla OSX
Próbuję utworzyć bibliotekę współdzieloną i zainstalować ją w zmiennej PATH, aby móc korzystać z funkcji narzędziowych w dowolnym momencie.
Oto co zrobiłem do tej pory: -
Utwórz plik utils.h
o następującej treści: -
#include<iostream>
#include<string>
std::string to_binary(int x);
Utwórz plik utils.cpp
o następującej treści: -
#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;
}
Wykonaj czynności wymienione tutaj: - http://www.techytalk.info/c-cplusplus-library-programming-on-linux-part-two-dynamic-libraries/
- Tworzenie biblioteki kodu wynikowego:
g++ -Wall -fPIC -c utils.cpp
Ale jako link powyżej jest przeznaczone dla Linuksa to naprawdę nie działa na OSX. Czy ktoś mógłby zasugerować przeczytanie zasobów lub zasugerować, w jaki sposób mógłbym skompilować i ustawić te obiekty w ścieżce na maszynie OSX?
Ponadto, domyślam się, że powinien istnieć sposób, w jaki mogę dokonać tej wieloplatformowości (tj. Napisać zestaw instrukcji (skrypt bash) lub Makefile), aby móc go łatwo skompilować na różnych platformach. Jakieś wskazówki na ten temat?
Tylko semi- odpowiednie, ale konwertowanie 'int' na ciąg' 0' i '1' jest łatwiejsze poprzez' std :: bitset': 'std :: string to_binary (int v) {return std :: bitset (v) .to_string();} ' –
You don ' t potrzebujesz zainstalować 'libuki.so' w' $ PATH' ale tylko w '$ LD_LIBRARY_PATH' (np. być może w twoim '$ HOME/lib /') –