biblioteki windows/cygwin/linux

0

Mój problem wygląda następująco. Muszę napisać koniecznie pod windowsem program do kodowania audio, który wykorzystuje bibliotekę spandsp. Ta biblioteka jest dedykowana na linuxa, do działania wymaga biblioteki audiofile i na linuxie działa to bez problemu. Z góry uprzedzam, że kod programu sam w sobie nie stanowi dla mnie problemu. Problem pojawia się natomiast kiedy próbuję to robić pod windą...
Korzystam z dev-c++ kompilacja - bez problemu, wywala [linker error] undefined reference to... <kazda funkcja="funkcja" z="z" audiofile="audiofile"> (ze spandsp nie mam tego problemu). Z pod linuxa mam przekompilowaną tą bibliotekę, nawet jeśli dołączę libspandsp.a w opcjach, to i tak nic to nie daje.
Druga kwestia, spandsp mam przekompilowane pod cygwinem, działa to bez żadnego problemu, natomiast chciałem w ten sam sposób zrobić z audiofile, ale niestety wywala undefined reference to _WinMain@16.
Przeczytałem na ten temat prawie całe google i chociaż ten problem się często pojawia, to do mojego przypadku nic nie znalazłem. Stąd moje pytanie i prośba o pomoc, jak zrobić, żeby te biblioteki pod windą działały??

0

Z pod linuxa mam przekompilowaną tą bibliotekę,

tak sie sklada, ze kazdy system ma inny format bibliotek, ba, miedzy tymi samymi systemami moga sie one roznic - wystarczy ze jeden bedzie 64 bit a drugi 32bit..

wszystkie biblioteki musisz miec skompilowane pod winda. zadna biblioteka spod linuksa nie ruszy. takie jest prawo binarek. kropka.

_WinMain@16

ta funkcja, to jest windowsowy, 'okienkowy' odpowiednik int main(). jesli linker wywala ze jej brak, to znaczy ze IDE wygenerowalo Ci projekt ktory probuje utworzyc aplikacje okienkowa i z jakiegos powodu nie dolaczylo odpowiedniej biblioteki ktora tenze winmain zawiera
rozwiazanie?
tworzac projekt, wybierz taki, aby IDE wygenerowalo projekt wyraznie mowiacy ze jest to DLL (albo statyczna biblioteka) a nie aplikacja. wtedy entrypoint nie bedzie WinMain tylko DllMain (albo go w ogole nie bedzie). strzelam, ze bediesz chcial miec statyczna biblioteke.. w efekcie, powinines dostac:

  • blah.dll, blah.lib i byc moze blad.exp (dla opcji DLL)
  • blah.lib (dla opcji static library)

ah.. teraz zauwazylem ze uzywasz dev'a i cygwina.. nazwy plikow .dll/.lib sa hym 'windowsowo-visualowe'.. nie pamietam czy cygwin sie ich trzyma, pewnie nie, wiec pewnie beda sie u Ciebie zwac jednak .a a nie .lib, moze nawet .so zamiast .dll ale tutaj juz watpie. w kazdym badz razie, opis problemu jest taki sam i .a z linuksa na cygwinie nie ruszy.

0

Co do tworzenia projektu, to nie bardzo rozumiem, bo ja ściągam źródła biblioteki np. audiofile-0.2.6 i nie tworzę projektu, tylko pod cygwinem próbuję to przekompilować (./configure, make). Czy to trzeba w inny sposób zrobić ?

0

myslalem ze masz projekt w devie..

w takim razie, wyglada na to ze konfiguracja zle przeszla (albo biblioteka nie jest przystosowana na win/cygwin)
sprawdz jakie opcje wybral configure, zbadaj czy w config.h pojawilo sie cokolwiek o windowsach, define WIN32, WINDOWS, WINNT etc zbadaj jakie opcje (switche) obsluguje configure, moze mozna wlaczyc recznie win32, a moze mozna wymusic postac staticlib zamiast dll..

a jak to nie to, to chyba zostaje zlapac kogos kto ma cygwina na kompie.. ja kurcze od pol roku juz nie mam..

0

poszukuje biblioteki w c++ która odczytuje i zapisuje do pliku bitmapę z ekranu i drugą która potrafi zmieniać położenie kursora i klikać jeśli takich nie ma to będzie trzeba to zrobić w asemblerze a w ogóle
zna ktoś może jakąś polską stronkę z bibliotekami i opisy do czego dana biblioteka jest bo znam dosyć dobrze c++ a bibliotek znam z 5-6. polecam SZKOŁA PROGRAMOWANIA c++ Stephen Prata wydanie 5 heliona dobra książeczka ;)

0

Masz kawalek kodu do zmiany pozycji kursora :D w trybie 80x25 dziala.

void outb(unsigned short port, unsigned short value)
{
    asm volatile ("outb %1, %0" : : "dN" (port), "a" (value));
}

unsigned short pos = y * 80 + x;
outb(0x3D4, 14);                  
outb(0x3D5, pos >> 8); 
outb(0x3D4, 15);                  
outb(0x3D5, pos);
0

widzę że będę musiał trochę się pouczyć asemblera ;/ a ktoś ma jeszcze jakieś propozycje??
a co z tą bitmapą?

0

Powyższy kod wyleci w kosmos w systemach 64-bitowych.

0

Zgadzam sie, ten kod w ogóle nie jest przeznaczony do uzywania w systemach, czy to 32, czy 64 bitowych, takich jak Windows, Linux, Unix, BSD, Cygwin ;)
Pytanie tez dla mnie z kosmosu, poniewaz w google wystarczy wpisac, bmp lib/library i jest wszystko. Zmieniac polozenie kursora, zeby szukac bitmap tez dziwne.
Biblioteka do zapisu bitmapy z ekranu, watpie zeby byla, poniewaz w jakims programie musisz widziec obrazek, a zeby go zobaczyc musisz wlaczyc jakis program, a nie ze bezposrednio bedziesz mial na ekranie, chyba ze w 0x13 lub chodzi o tapete z pulpitu, jesli o tapete to trzeba sie API zainteresowac danego systemu.

0

... poniewaz w jakims programie musisz widziec obrazek, a zeby go zobaczyc musisz wlaczyc jakis program, a nie ze bezposrednio bedziesz mial na ekranie...
ale ja nie powiedziałem że chce ten obraz wyświetlać ;] tylko chciałbym żeby był analizowany przez program i w zależności od pewnych informacji pobranych z tej bitmapy (jakiejś jej części) robić coś tam dalej

0

W dziele newbie wrzucilem kod do tego, poszukaj,

0

oki nie znam tak naprawdę angielskiego także nic raczej sobie nie poczytam w google o tym a założyłem się z nauczycielem o dwie flaszki że zrobię do końca roku program który będzie grał sam w szachy dobrze gram w szachy jaki tam algorytm nie zrobię to nie ma znaczenia ale żeby ten program grał myszką i analizował obraz jak coś to chociaż może ktoś zna jakieś fora na których bym mógł się jeszcze spytać :d

0

sorry kolego nie jestem obeznany na forach gdzie dokładnie dodałeś w newbie dodałeś kod?? wszedłem tam i jest masę tematów :| kto mi pomoże dostanie flaszke :d

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