Pomoc w portowaniu biblioteki na Windows

0

Cześć!

Udostępniłem w sieci swoją bibliotekę na licencji GPL, która działa pod Linuksem, BSD, Solarisem i Haiku. Akurat nie mam Windowsa, więc piszę z zapytaniem, czy zechciałby ktoś pomóc i wykonać skrypty kompilacji dla tego systemu oraz grzebnąć w pliku nagłówkowym :)

http://waa.cba.pl
Nie śmiać się ze strony :P

A jak nie, to może Wam się biblioteka chociaż przyda.

Pozdrawiam!

0

Pierwsze to podaj link do repo a nie do strony.
Drugie to użyj jakiegoś Make, które załatwi Ci wszystkie platformy, np. CMake, Scons, czy jakieś inne cholerstwo.

0

Już jest kod w Download.

Dla wszystkich wspieranych obecnie systemów użyłem skryptów Bash'a. Praktycznie tylko Haiku wymagał modyfikacji. Na chwilę obecną, więc skrypty kompilacyjne i instalacyjne dla Linuksa, BSD i Solarisa są identycznymi kopiami.

Myślę, że tutaj nie wystarczy użyć CMake, Automake, itp, bo Windows i tak wymaga innego sposobu eksportowania funkcji bibliotek dynamicznych. Potrzebne jest więc pogrzebanie w pliku nagłówkowym i funkcji inicjującej.

Pozdrawiam!

0

Dlaczego wymuszasz, by twoją bibliotekę kompilowano tylko i wyłącznie dynamicznie? Dlaczego wymuszasz użycie jedynego, konkretnego kompilatora, domyślnego gcc z wybranymi przez ciebie opcjami?

0

Wiesz, nie tyle wymuszam, co nie za bardzo wiem, jak napisać skrypt kompilacyjny.

GCC jest praktycznie na każdym z obecnie wspieranych przez skrypty systemie. Wystarczy dodać -shared i ma się bibliotekę - pod BSD, Solarisa, Linuksa i Haiku. Wiem, że mogę użyć ./configure, make i make install i pewnie na to przejdę, jednak pewnie to nie zmieni faktu, że nie przekompiluje biblioteki pod Windowsa :)

Wiesz... pisanie w C mi idzie, ale żeby to potem "wydać" to już mam problem :D Jak masz jakieś rady, jestem otwarty i ciekawy :)

0

Użyj jak już mówiłem CMake, on przygotuje projekt VS i będzie...

0

Co nie zmienia faktu, że rzeczy typu inicjalizacja bibliotek dynamicznych to dość różna rzecz pod Linuksem i Windowsem i to też trzeba zmienić. Najlepiej niech to użytkownik zainicjuje bibliotekę, wywołując jakąś funkcję. W ten sposób możesz też przekazać argumenty z wiersza polecenia. W boost tak to działa.

0

Niby jest DllMain, ale z powodu WinAPI nic mi to nie mówi:
BOOL WINAPI DllMain( __in HINSTANCE hinstDLL, __in DWORD fdwReason, __in LPVOID lpvReserved );

0

Powtórzę: inicjalizacja w ten sposób dla tego typu biblioteki jest beznadziejnym pomysłem.

0

W sumie to fakt.

Jakby zrobić camlinit() to odpada konstruktor i tylko przez dyrektywy różnicować sposoby eksportowania funkcji.
Dla Windowsa zrobić skrypt wykorzystujący kompilator mingw i w sumie gotowe.

A jak komuś nie pasi mingw to niech se kompiluje ręcznie :)

Taki plan sugerujesz? Dobrze zrozumiałem?

0

Tak, taka opcja jest w porządku. Mimo wszystko dobrze byłoby jeszcze kod doprowadzić do zgodności z Visual C++ i przetestować bibliotekę skompilowaną statycznie.

0

No nic, szkoda, że nie ma chętnych do pomocy :)

Na razie dla Windowsa nie będzie skryptów, nie mam jak przygotować ;)

Pozdrawiam!

1 użytkowników online, w tym zalogowanych: 0, gości: 1