Napisano 29 Lipiec 201410 l 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.
Napisano 29 Lipiec 201410 l 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 ;)
Napisano 29 Lipiec 201410 l Autor 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ę :)
Napisano 31 Lipiec 201410 l Autor 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 ==========
Napisano 31 Lipiec 201410 l 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
Napisano 1 Sierpień 201410 l Autor Boost jest skompilowany i się odnajduje (co samo w sobie jest osiągnięciem). No nic - walczę dalej :)
Napisano 15 Wrzesień 201410 l Autor 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 ==========
Napisano 13 Listopad 201410 l Autor 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 201410 l przez Kroopson
Napisano 13 Listopad 201410 l 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 ?
Napisano 14 Listopad 201410 l Autor 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.
Napisano 14 Listopad 201410 l 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
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto