Kroopson Napisano 29 Lipiec 2014 Napisano 29 Lipiec 2014 Hej! Próbował ktoś może skompilować bibliotekę i pluginy alembic'a pod windowsem? Byłbym bardzo wdzięczny za jakiekolwiek wskazówki bo odbijam się od jakichś bzdur w stylu linkowania libboost.
praetorian Napisano 29 Lipiec 2014 Napisano 29 Lipiec 2014 Czołem Ja próbowałem, ale dawno się poddałem w kwestii kompilacji VFXów pod windows :) Zawsze coś nie sztymuje, dlatego kombinujemy z pełną przesiadką na linuksa. Jako że z win+alembic walczyłem dość dawno, to niepamiętam szczegółów, ale wygrzebałem jakieś notki. Co do boosta, kompilacja z flagą address-model=64 pomagała: bjam toolset=msvc-10.0 link=static threading=multi address-model=64 release stage Gdzieś też pojawiała się definicja _WIN64, związana z bugiem visuala i adresowaniem pamięci. Wiem, że to niewiele, ale może jednak coś. Goodluck ;)
Kroopson Napisano 29 Lipiec 2014 Autor Napisano 29 Lipiec 2014 Dzięki - generalnie w aktualnej wersji alembic'a jest co prawda zestaw jakichś skryptów które w teorii powinny zbudować go ale w praktyce jest z nimi coś mocno nie tak. Jako build system użyty jest cmake, który sam w sobie jest dla mnie jeszcze mocno enigmatyczny ale się nie poddaję :)
Kroopson Napisano 31 Lipiec 2014 Autor Napisano 31 Lipiec 2014 Dobra - odbijam się od czegoś takiego: 1>------ Build started: Project: ZERO_CHECK, Configuration: RelWithDebInfo x64 ------ 2>------ Build started: Project: boostTest, Configuration: RelWithDebInfo x64 ------ 2> Microsoft (R) C/C++ Optimizing Compiler Version 16.00.40219.01 for x64 2> Copyright (C) Microsoft Corporation. All rights reserved. 2> 2> cl /c /Zi /W3 /WX- /O2 /Ob1 /D _WIN64 /D NDEBUG /D "CMAKE_INTDIR=\"RelWithDebInfo\"" /D _MBCS /Gm- /EHsc /MT /GS /fp:precise /Zc:wchar_t /Zc:forScope /GR /Fo"boostTest.dir\RelWithDebInfo\\" /Fd"boostTest.dir\RelWithDebInfo\vcWindows7.1SDK.pdb" /Gd /TP /errorReport:prompt ..\boost_trycompile.cpp 2> 2> boost_trycompile.cpp 2>D:\alembic\out\boost\include\boost-1_42\boost/thread/future.hpp(411): warning C4267: 'initializing' : conversion from 'size_t' to 'unsigned int', possible loss of data 2>boost_trycompile.obj : error LNK2019: unresolved external symbol "private: void __cdecl boost::thread::start_thread(void)" (?start_thread@thread@boost@@AEAAXXZ) referenced in function "public: __cdecl boost::thread::thread(void (__cdecl*)(void),struct boost::thread::dummy *)" (??$?0P6AXXZ@thread@boost@@QEAA@P6AXXZPEAUdummy@01 @@Z) 2>boost_trycompile.obj : error LNK2019: unresolved external symbol "public: __cdecl boost::thread::~thread(void)" (??1thread@boost@@QEAA@XZ) referenced in function main 2>boost_trycompile.obj : error LNK2019: unresolved external symbol "public: void __cdecl boost::thread::join(void)" (?join@thread@boost@@QEAAXXZ) referenced in function main 2>D:\alembic\boost_trycompile\build\RelWithDebInfo\b oostTest.exe : fatal error LNK1120: 3 unresolved externals 3>------ Skipped Build: Project: ALL_BUILD, Configuration: RelWithDebInfo x64 ------ 3>Project not selected to build for this solution configuration ========== Build: 1 succeeded, 1 failed, 0 up-to-date, 1 skipped ==========
praetorian Napisano 31 Lipiec 2014 Napisano 31 Lipiec 2014 Biblioteki boost'a na pewno się odnajdują ? Wygląda na to, że kompilator ich nie znalazł... Nie pamiętam, czy alembic pod windows nie wymagał kompilacji boost'a z konkretnym nazewnictwem, chodzi o to: http://www.boost.org/doc/libs/1_55_0/more/getting_started/windows.html#library-naming Z dokumentacji alembica https://code.google.com/p/alembic/source/browse/doc/Boost-howtobuild.txt : ./bjam install --layout=versioned link=static threading=multi cxxflags=-fPIC Ale zapewne o tym wiesz... Wersja boost'a też się zgadza? Pewnie nic nie pomogłem ;) pod linuksem idzie gładko
Kroopson Napisano 1 Sierpień 2014 Autor Napisano 1 Sierpień 2014 Boost jest skompilowany i się odnajduje (co samo w sobie jest osiągnięciem). No nic - walczę dalej :)
Kroopson Napisano 15 Wrzesień 2014 Autor Napisano 15 Wrzesień 2014 Ok doszedłem do takiego momentu że mi sie biblioteki nie chcą poprawnie linkować. Może jakaś mądra głowa podpowie? :( 2>ClCompile: 2> All outputs are up-to-date. 2>hdf5.lib(H5.obj) : error LNK2005: DllMain already defined in AbcExport.obj 2>msvcprt.lib(MSVCP100.dll) : error LNK2005: "void __cdecl std::_Xlength_error(char const *)" (?_Xlength_error@std@@YAXPEBD@Z) already defined in libcpmt.lib(xthrow.obj) 2>msvcprt.lib(MSVCP100.dll) : error LNK2005: "void __cdecl std::_Xout_of_range(char const *)" (?_Xout_of_range@std@@YAXPEBD@Z) already defined in libcpmt.lib(xthrow.obj) 2>msvcprt.lib(MSVCP100.dll) : error LNK2005: "public: virtual __cdecl std::basic_streambuf >::~basic_streambuf >(void)" (??1?$basic_streambuf@DU?$char_traits@D@std@@@std@@UEAA@XZ) already defined in AbcExport.obj 2>msvcprt.lib(MSVCP100.dll) : error LNK2005: "public: class std::basic_ostream > & __cdecl std::basic_ostream >::flush(void)" (?flush@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@XZ) already defined in AbcExport.obj 2>msvcprt.lib(MSVCP100.dll) : error LNK2005: "public: void __cdecl std::basic_ostream >::_Osfx(void)" (?_Osfx@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAXXZ) already defined in AbcExport.obj 2>msvcprt.lib(MSVCP100.dll) : error LNK2005: "bool __cdecl std::uncaught_exception(void)" (?uncaught_exception@std@@YA_NXZ) already defined in libcpmt.lib(uncaught.obj) 2>msvcprt.lib(MSVCP100.dll) : error LNK2005: "public: void __cdecl std::basic_ios >::setstate(int,bool)" (?setstate@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAAXH_N@Z) already defined in AbcExport.obj 2>msvcprt.lib(MSVCP100.dll) : error LNK2005: "public: __int64 __cdecl std::basic_streambuf >::sputn(char const *,__int64)" (?sputn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA_JPEBD_J@Z) already defined in AbcExport.obj 2>msvcprt.lib(MSVCP100.dll) : error LNK2005: "public: int __cdecl std::basic_streambuf >::sputc(char)" (?sputc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAHD@Z) already defined in AbcExport.obj 2>msvcprt.lib(MSVCP100.dll) : error LNK2005: "public: class std::basic_ostream > & __cdecl std::basic_ostream >::operator2>msvcprt.lib(MSVCP100.dll) : error LNK2005: "public: virtual __cdecl std::basic_iostream >::~basic_iostream >(void)" (??1?$basic_iostream@DU?$char_traits@D@std@@@std@@UEAA@XZ) already defined in AbcExport.obj 2>msvcprt.lib(MSVCP100.dll) : error LNK2005: "protected: char * __cdecl std::basic_streambuf >::_Pninc(void)" (?_Pninc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAPEADXZ) already defined in AbcExport.obj 2>msvcprt.lib(MSVCP100.dll) : error LNK2005: "protected: __cdecl std::basic_streambuf >::basic_streambuf >(void)" (??0?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAA@XZ) already defined in AbcExport.obj 2>msvcprt.lib(MSVCP100.dll) : error LNK2005: "private: static void __cdecl std::ios_base::_Ios_base_dtor(class std::ios_base *)" (?_Ios_base_dtor@ios_base@std@@CAXPEAV12@@Z) already defined in libcpmt.lib(ios.obj) 2>msvcprt.lib(MSVCP100.dll) : error LNK2005: "public: virtual __cdecl std::basic_ios >::~basic_ios >(void)" (??1?$basic_ios@DU?$char_traits@D@std@@@std@@UEAA@XZ) already defined in AbcExport.obj 2>msvcprt.lib(MSVCP100.dll) : error LNK2005: "public: __cdecl std::basic_iostream >::basic_iostream >(class std::basic_streambuf > *)" (??0?$basic_iostream@DU?$char_traits@D@std@@@std@@QEAA@PEAV?$basic_streambuf@DU?$char_traits@D@std@@@1@@Z) already defined in AbcExport.obj 2>msvcprt.lib(MSVCP100.dll) : error LNK2005: "protected: __cdecl std::basic_ios >::basic_ios >(void)" (??0?$basic_ios@DU?$char_traits@D@std@@@std@@IEAA@XZ) already defined in AbcExport.obj 2>msvcprt.lib(MSVCP100.dll) : error LNK2005: "public: void __cdecl std::_Container_base0::_Orphan_all(void)" (?_Orphan_all@_Container_base0@std@@QEAAXXZ) already defined in AbcExport.obj 2>msvcprt.lib(MSVCP100.dll) : error LNK2005: "public: virtual __cdecl std::basic_ostream >::~basic_ostream >(void)" (??1?$basic_ostream@DU?$char_traits@D@std@@@std@@UEAA@XZ) already defined in AbcExport.obj 2>msvcprt.lib(MSVCP100.dll) : error LNK2005: "public: __cdecl std::basic_ostream >::basic_ostream >(class std::basic_streambuf > *,bool)" (??0?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA@PEAV?$basic_streambuf@DU?$char_traits@D@std@@@1@_N@Z) already defined in AttributesWriter.obj 2>msvcprt.lib(MSVCP100.dll) : error LNK2005: "protected: void __cdecl std::basic_streambuf >::setg(char *,char *,char *)" (?setg@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAXPEAD00@Z) already defined in AbcExport.obj 2>msvcprt.lib(MSVCP100.dll) : error LNK2005: "public: class std::basic_ostream > & __cdecl std::basic_ostream >::operator2>msvcprt.lib(MSVCP100.dll) : error LNK2005: "public: class std::basic_ostream > & __cdecl std::basic_ostream >::operator2>msvcprt.lib(MSVCP100.dll) : error LNK2005: "public: class std::locale::facet * __cdecl std::locale::facet::_Decref(void)" (?_Decref@facet@locale@std@@QEAAPEAV123@XZ) already defined in AbcExport.obj 2>msvcprt.lib(MSVCP100.dll) : error LNK2005: "private: static class std::locale::_Locimp * __cdecl std::locale::_Getgloballocale(void)" (?_Getgloballocale@locale@std@@CAPEAV_Locimp@12@XZ) already defined in libcpmt.lib(locale0.obj) 2>msvcprt.lib(MSVCP100.dll) : error LNK2005: "protected: void __cdecl std::basic_streambuf >::_Init(void)" (?_Init@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAXXZ) already defined in AbcExport.obj 2>msvcprt.lib(MSVCP100.dll) : error LNK2005: "public: __cdecl std::_Lockit::~_Lockit(void)" (??1_Lockit@std@@QEAA@XZ) already defined in libcpmt.lib(xlock.obj) 2>msvcprt.lib(MSVCP100.dll) : error LNK2005: "public: void __cdecl std::locale::facet::_Incref(void)" (?_Incref@facet@locale@std@@QEAAXXZ) already defined in AbcExport.obj 2>msvcprt.lib(MSVCP100.dll) : error LNK2005: "public: __cdecl std::locale::id::operator unsigned __int64(void)" (??Bid@locale@std@@QEAA_KXZ) already defined in AbcExport.obj 2>msvcprt.lib(MSVCP100.dll) : error LNK2005: "public: __cdecl std::_Lockit::_Lockit(int)" (??0_Lockit@std@@QEAA@H@Z) already defined in libcpmt.lib(xlock.obj) 2>msvcprt.lib(MSVCP100.dll) : error LNK2005: "public: void __cdecl std::basic_ios >::clear(int,bool)" (?clear@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAAXH_N@Z) already defined in AbcExport.obj 2>msvcprt.lib(MSVCP100.dll) : error LNK2005: "public: virtual __cdecl std::basic_istream >::~basic_istream >(void)" (??1?$basic_istream@DU?$char_traits@D@std@@@std@@UEAA@XZ) already defined in AbcExport.obj 2>msvcprt.lib(MSVCP100.dll) : error LNK2005: "public: __cdecl std::basic_istream >::basic_istream >(class std::basic_streambuf > *,bool)" (??0?$basic_istream@DU?$char_traits@D@std@@@std@@QEAA@PEAV?$basic_streambuf@DU?$char_traits@D@std@@@1@_N@Z) already defined in AbcExport.obj 2>MSVCRT.lib(MSVCR100.dll) : error LNK2005: memmove already defined in LIBCMT.lib(memcpy.obj) 2>MSVCRT.lib(MSVCR100.dll) : error LNK2005: "public: __cdecl std::exception::exception(char const * const &)" (??0exception@std@@QEAA@AEBQEBD@Z) already defined in LIBCMT.lib(stdexcpt.obj) 2>MSVCRT.lib(MSVCR100.dll) : error LNK2005: "public: virtual __cdecl std::exception::~exception(void)" (??1exception@std@@UEAA@XZ) already defined in LIBCMT.lib(stdexcpt.obj) 2>MSVCRT.lib(MSVCR100.dll) : error LNK2005: "public: __cdecl std::exception::exception(class std::exception const &)" (??0exception@std@@QEAA@AEBV01@@Z) already defined in LIBCMT.lib(stdexcpt.obj) 2>MSVCRT.lib(MSVCR100.dll) : error LNK2005: "public: __cdecl std::exception::exception(void)" (??0exception@std@@QEAA@XZ) already defined in LIBCMT.lib(stdexcpt.obj) 2>MSVCRT.lib(MSVCR100.dll) : error LNK2005: memchr already defined in LIBCMT.lib(memchr.obj) 2>MSVCRT.lib(MSVCR100.dll) : error LNK2005: "public: bool __cdecl type_info::operator==(class type_info const &)const " (??8type_info@@QEBA_NAEBV0@@Z) already defined in LIBCMT.lib(typinfo.obj) 2>MSVCRT.lib(MSVCR100.dll) : error LNK2005: "public: __cdecl std::bad_cast::bad_cast(char const *)" (??0bad_cast@std@@QEAA@PEBD@Z) already defined in LIBCMT.lib(stdexcpt.obj) 2>MSVCRT.lib(MSVCR100.dll) : error LNK2005: fputc already defined in LIBCMT.lib(fputc.obj) 2>MSVCRT.lib(MSVCR100.dll) : error LNK2005: ungetc already defined in LIBCMT.lib(ungetc.obj) 2>MSVCRT.lib(MSVCR100.dll) : error LNK2005: _lock_file already defined in LIBCMT.lib(_file.obj) 2>MSVCRT.lib(MSVCR100.dll) : error LNK2005: _unlock_file already defined in LIBCMT.lib(_file.obj) 2>MSVCRT.lib(MSVCR100.dll) : error LNK2005: fflush already defined in LIBCMT.lib(fflush.obj) 2>MSVCRT.lib(MSVCR100.dll) : error LNK2005: setvbuf already defined in LIBCMT.lib(setvbuf.obj) 2>MSVCRT.lib(MSVCR100.dll) : error LNK2005: memcpy_s already defined in LIBCMT.lib(memcpy_s.obj) 2>MSVCRT.lib(MSVCR100.dll) : error LNK2005: fwrite already defined in LIBCMT.lib(fwrite.obj) 2>MSVCRT.lib(MSVCR100.dll) : error LNK2005: _fseeki64 already defined in LIBCMT.lib(fseeki64.obj) 2>MSVCRT.lib(MSVCR100.dll) : error LNK2005: fclose already defined in LIBCMT.lib(fclose.obj) 2>MSVCRT.lib(ti_inst.obj) : error LNK2005: "private: __cdecl type_info::type_info(class type_info const &)" (??0type_info@@AEAA@AEBV0@@Z) already defined in LIBCMT.lib(typinfo.obj) 2>MSVCRT.lib(ti_inst.obj) : error LNK2005: "private: class type_info & __cdecl type_info::operator=(class type_info const &)" (??4type_info@@AEAAAEAV0@AEBV0@@Z) already defined in LIBCMT.lib(typinfo.obj) 2> Creating library D:/alembic/build/maya/AbcExport/Release/AbcExport.lib and object D:/alembic/build/maya/AbcExport/Release/AbcExport.exp 2>LINK : warning LNK4098: defaultlib 'MSVCRT' conflicts with use of other libs; use /NODEFAULTLIB:library 2>D:\alembic\build\maya\AbcExport\Release\AbcExport.mll : fatal error LNK1169: one or more multiply defined symbols found 2> 2>Build FAILED. 2> 2>Time Elapsed 00:00:00.60 ========== Build: 1 succeeded, 1 failed, 7 up-to-date, 0 skipped ==========
Kroopson Napisano 15 Wrzesień 2014 Autor Napisano 15 Wrzesień 2014 Ok - pomieszałem liby kompilowane z /MT z /MD...
Kroopson Napisano 13 Listopad 2014 Autor Napisano 13 Listopad 2014 (edytowane) HA!!!!!!!!!!!!!! UDAŁO SIĘ :) Zajęło tylko nota bene 4 miesiące ale w końcu znalazłem w czym rzecz, a oczywiście rzecz była trywialna. W pliku H5.c w bibliotece HDF5 jest zdefiniowana funkcja dllMain. Po usunięciu jej plugin do majki zlinkował się poprawnie (i działa). Poprzednio miałem ten błąd: hdf5.lib(H5.obj) : error LNK2005: DllMain already defined in AbcExport.obj Jeszcze jakby ktoś się za to zabierał: Należy zapomnieć o tym setupie który jest dostarczany razem z alembic'iem. Jest mocno nieaktualny i nie bardzo chce działać. Trzeba przysiąść do cmake'a i po kolei wyszukać wszystkie zależności. Nie obędzie się też bez kilku drobnych tweaków w kodzie (gdzieś tam trzeba dopisać #undef min i #undef max, chyba w ilmbase albo w openexr) Edytowane 13 Listopad 2014 przez Kroopson
praetorian Napisano 13 Listopad 2014 Napisano 13 Listopad 2014 HA!!!!!!!!!!!!!! UDAŁO SIĘ :) Zajęło tylko nota bene 4 miesiące ale w końcu znalazłem w czym rzecz, a oczywiście rzecz była trywialna. W pliku H5.c w bibliotece HDF5 jest zdefiniowana funkcja dllMain. Po usunięciu jej plugin do majki zlinkował się poprawnie (i działa). Poprzednio miałem ten błąd: hdf5.lib(H5.obj) : error LNK2005: DllMain already defined in AbcExport.obj Jeszcze jakby ktoś się za to zabierał: Należy zapomnieć o tym setupie który jest dostarczany razem z alembic'iem. Jest mocno nieaktualny i nie bardzo chce działać. Trzeba przysiąść do cmake'a i po kolei wyszukać wszystkie zależności. Nie obędzie się też bez kilku drobnych tweaków w kodzie (gdzieś tam trzeba dopisać #undef min i #undef max, chyba w ilmbase albo w openexr) Heh, zeszło Ci się, ale super, że się udało. Co do error LNK2005: DllMain - w VC++ jest ustawienie /FORCE:MULTIPLE linkera aby ignorował wielokrotne kopie symboli Natomiast jeśli chodzi o min/max, może wystarczyć #define NOMINMAX Moge spytać czemu jesteś taki zapięty na Alembica i pod windows ?
Kroopson Napisano 14 Listopad 2014 Autor Napisano 14 Listopad 2014 Robię to nie tyle dla samego alembic'a co dla zmierzenia się z tematem. Coś jak misja na księżyc, nie ma bezpośredniego zysku ale pośrednio dużo mi pozostało po tej przygodzie. Dzięki temu nauczyłem się cmake'a i dość sporo dowiedziałem się o linkowaniu bibliotek. Teraz mam wszystkie pluginy które rozwijamy w naszym dzizale pod kontrolą cmake'a i mogę próbować kolejnych ciekawych rzeczy.
praetorian Napisano 14 Listopad 2014 Napisano 14 Listopad 2014 Robię to nie tyle dla samego alembic'a co dla zmierzenia się z tematem. Coś jak misja na księżyc, nie ma bezpośredniego zysku ale pośrednio dużo mi pozostało po tej przygodzie. Dzięki temu nauczyłem się cmake'a i dość sporo dowiedziałem się o linkowaniu bibliotek. Teraz mam wszystkie pluginy które rozwijamy w naszym dzizale pod kontrolą cmake'a i mogę próbować kolejnych ciekawych rzeczy. kapuję... Też hoduję swoje projekty na CMake'u (i mercurialu). Powodzenia w przyszłych projektach, wiem, że to ciężki kawałek chleba :) Ostatnio mierzyłem się z OpenVDB i cortexem
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się