przejście do zawartości
zpr c++ quick reference
Narzędzia użytkownika
Zarejestruj się!
Zaloguj
Narzędzia witryny
Narzędzia
Pokaż stronę
Poprzednie wersje
Odnośniki
Ostatnie zmiany
Menadżer multimediów
Indeks
Zaloguj
Zarejestruj się!
Ostatnie zmiany
Menadżer multimediów
Indeks
Ślad:
graph_import_export
Ta strona jest tylko do odczytu. Możesz wyświetlić źródła tej strony ale nie możesz ich zmienić.
**Boost Graph Import Export** ====== Budowa biblioteki ====== Aby używać **read_graphml** musimy zbudować bibliotekę z odpowiednimi opcjami, gdyż biblioteki dostępne z Boost Pro nie zawierają GraphML readera (przynajmniej w wersji MSVC8.0). Jak większość bibliotek, których główną platformą docelową jest linux, kompilacja ich zajmuje bardzo dużo czasu, gdyż trzeba znaleźć rozwiązania wielu problemów. Istnieje duże prawdopodobieństwo, że opisana procedura nie rozwiąże wszystkich problemów, które się pojawią podczas próby doprowadzenia **read_graphml** do działania. Musimy mieć biblioteki EXPAT (http://sourceforge.net/projects/expat/) i ustawic zmienne środowiskowe na odpowiednie ścieżki przed kompilacją bibliotek. np. (ważne cudzysłowy):\\ set EXPAT_INCLUDE="...\Expat 2.0.1\Source\lib"\\ set EXPAT_LIBPATH="...\Expat 2.0.1\Bin"\\ Następnie możemy budować biblioteki Boost Graph (używając **bjam**, zgodnie z instrukcją Getting Started). W odpowiednim katalogu ...\boost\libs\graph\build wywołujemy **bjam**. Jeśli pojawiło się ostrzeżenie o braku ścieżek EXPAT ustawiamy je ponownie. Sprawdzamy czy nie pojawiły się błędy i jęsli są to je korygujemy (np. nieznaleziono expat.h) ustawiając odpowiednie ścieżki EXPAT, include w kompilatorze itp. Jeśli kompilacja się nie powiodłą z powodu braku biblioteki expat.lib otwieramy plik **.../boost/libs/graph/build/Jamfile.v2** i zmieniamy **<find-shared-library>expat** na **<find-shared-library>libexpat** lub inne np. libexpatMT, libexpatw, libexpatwMT w zależności od naszego celu (czy biblioteka wielowątkowa, czy debug itd.). Kolejna przydatną rzeczą jest po linii **<define>BOOST_GRAPH_NO_LIB** dodanie **<define>XML_STATIC**, dzięki czemu nie będziemy musieli mieć pliki **libexpat.dll** przy uruchamianiu programu. Nie zawsze to jednak działa i można to osiągnąć również dodają linię **#define XML_STATIC** w pliku **graphml.cpp** przed **#include <expat.h>** Gdy udało się skompilować możemy dodawać tę bibliotekę np. **boost_graph-vc80-gd-1_38.lib** do naszego programu. Wtedy będzie potrzebny nam jednak plik dll. Jeśli chcemy dodać procedury do naszego kodu wynikowego dołączamy np. **libboost_graph-vc80-mt-gd-1_38.lib**. Do kompilacji potrzebne jest również dołączenie biblioteki **libexpat.lib**. Jeśli jednak chcemy mieć tylko jedne biblioteki Boost, musimy zbudować całe biblioteki Boost, w tym celu w katalogu **.../boost/** wywołujemy **bjam** z odpowiednimi parametrami (instrukcja w Getting Started). Pamietajmy o ustwieniu zmiennych **EXPAT_INCLUDE** i **EXPAT_LIBPATH** przed wywołaniem **bjam**. Dobrze jest jednak najpierw skompilować samą bibliotekę Graph by zobaczyć czy kompiluje się bez błędów, ponieważ jeśli pojawią się błędy np. związane z biblioteką EXPAT, biblioteki Boost zbudują się bez obsługi GraphML readera. Wczytywanie różnych grafów, np. z plików znalezionych w internecie, wymaga określenia różnych parametrów, co w praktyce wiąże się z zajrzeniem do pliku z grafem i ręczne określenie np. co jest głownym identyfikatorem węzła lub jakie każdy węzeł lub krawędź ma właściwości (np. "name", "color", "weight"). Nie ma jednej funkcji do wczytania dowolnego grafu, a przynajmniej nie jest taka opisana w dokumentacji. Jest to z góry narzucone przez niefortuny sposób opisu grafów w tych bibliotekach, który zakłada, że atrybuty grafu będą znane podczas kompilacji. Jest to wielka wada, gdyż praktycznie uniemożliwia wykorzystanie tej biblioteki do wczytywania grafów stworzonych przez innych.
graph_import_export.1239114828.txt.gz
· ostatnio zmienione: 2009/04/07 16:33 przez
sgasioro
Narzędzia strony
Pokaż stronę
Poprzednie wersje
Odnośniki
Do góry