Visual Studio Project létrehozása Makefileokból

Visual Studio Project létrehozása Makefileokból
2009-04-05T01:12:01+02:00
2009-04-16T16:51:06+02:00
2022-11-13T07:45:45+01:00
Mr. Teddy
Sziasztok!
Egy feladatomhoz szeretném használni a "LIVE555 Streaming Media" c++ függvényeit. A honlapról ugye letölthető a forráskód, makefileokkal együtt. Azt szeretném kérdezni, hogy hogyan tudok Visual Studio 2005-ben ilyen makefilokat tartalmazó forráskódból projektet létrehozni?
Köszönöm szépen előre is a segítságet!
Mutasd a teljes hozzászólást!
Na, megint belenéztem. Amikor ilyen hibát kapsz, akkor meg kell nézni hogy hol található az a típus ( jelen esetben a struct timeval ). Ha megkeresed, akkor meglátod, hogy a winsock2.h-ban.
De, ugye ez a makefile-al már lefordult, tehát azt jelenti, hogy valamilyen formában be van includeolva a winsock2.h.
Keressük meg: nézzük meg milyen headereket includeol a framedsource.hh. Első a NetCommon.h. Hátha ez includeolja a winsock2.h-t. Ha belenézünk a NetCommon.h headerbe ezt fogjuk látni ( többek között ):
... #if defined(IMN_PIM) #include "IMN_PIMNetCommon.h" #elif defined(__WIN32__) || defined(_WIN32) || defined(_WIN32_WCE) /* Windows */ #if defined(WINNT) || defined(_WINNT) || defined(__BORLANDC__) || defined(__MINGW32__) || defined(_WIN32_WCE) #define _MSWSOCK_ #include <winsock2.h> ...
Tehát itt a winsock2.h, de valamiért ne includolja be. Lássuk miért. Az IMN_PIM preprocessor definíció nincs definiálva sehol( megnéztem ). Eddig ok.
Ha a winsock2.h headert includolni akarom ,akkor elsősorban a __WIN32__ vagy a _WIN32 vagy a _WIN32_WCE valamelyike definiálva kell legyen. A _WIN32_WCE-t hagyjuk figyelmen kívül, az más platform. Marad a másik kettő. Nézzük meg definiálva van legalább az egyik közülük? Nálam a VC++ 2008 Expressben: Project menü | <ProjectNeve> properties | Configuration properties | C/C++ | Preprocessor | Preprocessor definitions. Az én gépemen a fenti definíciók közül egyik sincs meg. Ez jó jel Ezek vannak nálam: WIN32;_DEBUG;_WINDOWS
Módosítsd így:
WIN32;_DEBUG;_WINDOWS; _WIN32 vagy WIN32;_DEBUG;_WINDOWS; __WIN32__ vagy WIN32;_DEBUG;_WINDOWS; _WIN32; __WIN32__

Visszatérünk a framedsource.hh-hoz. Még van ott egy sor:
#if defined(WINNT) || defined(_WINNT) || defined(__BORLANDC__) || defined(__MINGW32__) || defined(_WIN32_WCE)
Tehát ezek közül is legalább egy preprocesszor definiálva kellene legyen. Ha nincs, akkor még módosítunk a VC++ projektünkben. Az én gépemen amint fennebb írtam ezek közül sincs meg egyik sem. Tehát módosítsuk valahogy így a Preprocessor definitions értékét:

WIN32;_DEBUG;_WINDOWS; _WIN32; WINNT; vagy WIN32;_DEBUG;_WINDOWS; _WIN32; _WINNT; vagy WIN32;_DEBUG;_WINDOWS; _WIN32; WINNT; _WINNT;
Save majd build. Így már lekellene forduljon, vagy legalább ez a hiba többé nem jelenjen meg.

Azért írtam le ennyire aprólékosan, hogy tanulj meg te is egy kicsit egyedül boldogulni.
Valószínű még lesznek ilyen-olyan problémák amikbe beleakadsz, de biztos meglehet oldani. Ezért érdekes a programozás.
Remélem sikerült segítenem.
Mutasd a teljes hozzászólást!

  • Minek ehhez projekt? >>Itt talalsz leirast VC-vel valo buildelesre...
    Mutasd a teljes hozzászólást!
  • Igen, ezt én is olvastam, de az amit leír azt a visual studio 2005-ben nem találtam.

    Amúgy azért kéne a projekt, mert szeretném egy progiba felhasználni a függvényeit, vagy valami módon meghívni őket.
    Mutasd a teljes hozzászólást!
  • de az amit leír azt a visual studio 2005-ben nem találtam.


    A szovegben van link, ami tartalmaz par tanacsot VC2005-el valo buildeleshez. nmake-et kell hasznalni...
    Mutasd a teljes hozzászólást!
  • Igen, ami a link alatt volt, azt megcsináltam. De innentől kezdve nem tudok mit csinálni. Eddig nem nyitottam/buildeltem ilyen forráskódot, csak üres projektben megírt progit csináltam, nem ilyen komplexet. És ott mindig ugye a build paranccsal buildeltem.
    Szóval sajna hogy makefile, meg nmake mire való, azt nem tudom.

    Igazából amit ezzel az egész programmal akarok csinálni, az az, hogy van egy program, ami RTP-n keresztül kapna mpeg2-ts streamet, és végülis csak ezt a kliens részt kéne megírnom, vagy gondoltam ebből a libraryból a kellő függvényeket meghívom.
    Mutasd a teljes hozzászólást!
  • Ha lebuildelted, akkor valoszinuleg keletkezett egy .lib vagy egy .dll es .lib kiterjesztesu fajl, ezeket be kell linkelned a te projektedbe, amelybol hasznalni szeretned a fuggvenyeket, meg be kell include-olnod a megfelelo headereket...
    Mutasd a teljes hozzászólást!
  • Szia!
    Sajna nem sikerül lebuildelnem...
    Nagy vonalakban step-by-step nem tudnád megírni hogy kellene?
    Sajna nem vagyok nagy majer c++-ban
    Mutasd a teljes hozzászólást!
  • Sajna nem vagyok nagy majer c++-ban

    Nem is kell az legyél.
    Ha egy picit kutakodsz ( csak akarni kell ) találsz egy readme vagy install vagy build ( valami ilyesmi ) filet, ahol le van írva lépésről lépésre, hogy hogyan kell lefordítani. Kb. fél évvel ezelőtt pusztán kíváncsiságból letöltöttem és le is fordítottam gond nélkül az egészet. Persze kipróbáltam és működött. Ha jól emlékszem több lépésben kellett lefordítani, de mondom, nagyon aprólékosan és érthetően van leírva az egész.
    Konkrétan, mit nem tudsz? A kliens programod valamennyire már kész van? Az RTP protokollról bőven találsz leírást a neten, de ha valami konkrét kérdésed van akkor segítek. Egy ilyen klienst ( egy részét ) már írtam én is, nem nagyon bonyolult, csak türelem és kitartás.

    ---
    Miért akarsz projektet létrehozni, ha téged csak egyes függvények érdekelnek? Másold ki azt ami érdekel a te projectedbe és kész. De azért olvass bele a licence-be is, hogy használhatod-e a forráskódot arra amire neked kell és úgy ahogy neked kell.
    Még annyit, hogy én VC++ 6.0 alatt fordítottam, de nem hinném, hogy a 2005-el másképp kellene.
    Mutasd a teljes hozzászólást!
  • Itt van ni: LIVE555 Streaming Media
    A 2. pont nagyon fontos! A Visual Studio könyvtárában kellene legyen egy VC vagy VC++ könyvtár, azt add meg a TOOLS32 értékének.
    Itt meg a hab a tortán ( ugyanott, de picit lennebb ):
    Eric Flickner contributes some hints for compiling the code under Visual Studio 2005.

    Ennél többet nem kérhetsz.
    Mutasd a teljes hozzászólást!
  • Itt meg a hab a tortán ( ugyanott, de picit lennebb ): Eric Flickner contributes some hints for compiling the code under Visual Studio 2005.
    Ennél többet nem kérhetsz.


    klorand hozzászólása Mr. Teddy (14:14) részére előzmény | privát | 2009.04.05. 15:44 | válasz
    de az amit leír azt a visual studio 2005-ben nem találtam.

    A szovegben van link, ami tartalmaz par tanacsot VC2005-el valo buildeleshez. nmake-et kell hasznalni...


    Marpedig kert!
    Mutasd a teljes hozzászólást!
  • Jogos, igazad van!

    Mr. teddy
    Belenézhetsz a vlc kódjába is, azt C-ben írták. Nem tudom te hogy vagy vele, de nekem a C jobban ínyemre van mint a C++. Ez tud streamelni is és kliensként fogadni is ts fileokat.
    Mutasd a teljes hozzászólást!
  • Hm, belenézek akkor, mert a C nekem is barátságosabb.
    Lényegében azt szeretném megírni, és egy másik (igaz azt c++-ban kell írni) progival azt összehozni, hogy a progi nem egy fáljt olvas be, majd végzi vele a dolgokat, hanem rtp-ről jövő mpeg2 ts-t. Gondolom ami bejön, valami pufferbe be kell tölteni, és onnan kiolvasgatni az aktuális értékeket...
    Mutasd a teljes hozzászólást!
  • Egyébként mondom, végigcsináltam azt amit leírtak egy másik oldalon. Megcsináltam a bat-et lefuttattam, látom abban van nmake, akkor az biztos meg is csinálta azt amit kellett.

    De itt akadok el sajnos.
    Lehet általánosságban a Visual Studio kezelésében vannak problémáim.
    Hogy tudok buildleni egy forráskódot, ez esetben ennek a proginak a forráskódját. Úgy gondoltam ezt úgy kell, hogy valami projektet kell létrehozni, mert különben nem nagyon áll velem szóba addig a VC.
    Igazából az már fasza lenne, ha az ilyen minta progikat le tudnáám fordítani és mennének, mert abból már ki tudok indulni a feladatomhoz.
    Mutasd a teljes hozzászólást!
  • Gondolom ami bejön, valami pufferbe be kell tölteni, és onnan kiolvasgatni az aktuális értékeket...

    Persze. Erre való a queue, keress csak rá, biztos találsz leírást róla. Én ezt úgy csinálnám meg, hogy van két szálam, az egyik figyeli a socketet és amit onnan kap, bemásolja a queue-ba, majd amikor összegyűlt egy általad meghatározott mennyiségű adat, akkor a másik szál "kiveszi" a sorból ( queue ) az adatokat és továbbküldi pl. egy callback függvénynek ami feldolgozza a ts csomagokat. Ezt az adatfogadó/továbbküldő részt tedd egy külön modulba/fájlba.
    Persze lehet úgy is, hogy ahogy jönnek az adatok rögtön tovább is küldöd, de én ezt nem ajánlanám, mert nagy az adatvesztés kockázata.
    Mutasd a teljes hozzászólást!
  • Hogy tudok buildleni egy forráskódot, ez esetben ennek a proginak a forráskódját.


    make makefile_neve vagy nmake makefile_neve
    Mutasd a teljes hozzászólást!
  • És ezt az nmake parancsot have kell belökni? :)
    A VS command Windowjába aszondja Command "make" is not valid.
    Mondom bocsi, ha egyértelmű dolgokra kérdezek rá
    Mutasd a teljes hozzászólást!
  • jujj!

    cmd ablak...
    Mutasd a teljes hozzászólást!
  • vcvarsall.bat, mond ez neked valamit? cmd ablak...
    Mutasd a teljes hozzászólást!
  • OKs...
    Közben megtaláltam, benne van a visual studio mappában az nmake.exe. Mindjárt kipróbálom.
    Csak hogy kicsit kidumáljam magam a hülyeségem alól, nem tudtam most az nmake alatt konkrétan egy parancssorban futtatandó progit értetek.

    MOD: sajna nem buildelte le, megadtam a helyét, de egyik *.hh fájllal valamit nem tud kezdeni (már bezártam az ablakot, nem tudom mi volt pontosan a hibakód)


    Nem tudná nekem valaki megpróbálni lefordítani, hátha neki megy? Átküldhetem az egyik holnap szerint módosított forráskódot mailben...
    Mutasd a teljes hozzászólást!
  • Neked meg mi bajod?
    Mutasd a teljes hozzászólást!
  • A gyengébbek kedvéért a "cmd ablak" nem ismeri az nmake parancsot, sem a többi VS eszközt.

    Megoldás: Menu -> Tools -> Visual Studio Command Prompt.
    Na ez beállítja helyesen a környezeti változókat (vcvarsall.bat). És nem kell kézzel gányolni, hogy működjön a "sima" cmd ablakban is a make...

    Nekem meg mi bajom? Hogy az egyik kérdez, a másik meg hülyeséget válaszol.
    Mutasd a teljes hozzászólást!
  • Hagyd, mindig ilyen, amikor menstrual!
    Mutasd a teljes hozzászólást!
  • Megoldás: Menu -> Tools -> Visual Studio Command Prompt.

    Az nem a cmd ablak?
    Mutasd a teljes hozzászólást!
  • Nem tudom hány éves, de én szerintem inkább kimaradt neki!
    Mutasd a teljes hozzászólást!
  • Na de srácok ezzel nem jutunk előrébb.
    Oké, megpróbáltam az utóbbi módon is buildelni, nem ment.

    Aki leírja, hogy hogyan tudok eljutni odáig, hogy a testprogikat tudjam futtatni, az megkapja az 50 pontot.
    Természetesen nem vagyok analfabéta, de ha nem mondjátok hogy hol kell mit futtatni, akkor azzal nem vagyok kisegítve.

    Szóval a dolog adott, köszi mindekitől előre is!
    Mutasd a teljes hozzászólást!
  • Ugye viccelsz?
    Én is és klorand is rámutattunk arra a linkre: Compile Live555 using VS2005
    Na, az első és a 2. pontokat remélem érted.
    A 3. pontnál elindítasz egy cmd ablakot, ahogy már írtam egy előbbi hozzászólásomban, belépsz a live könyvtárba ( amit letöltöttél és kicsomagoltál ) és beírod ezt:
    genWindowsMakefiles.cmd
    A 4. pont ugye egyértelmű, 5. ugyanúgy.
    A 6. pont. Hozz létre a live könyvtárba egy, mondjuk, compile.bat filet és írd bele azt amit ott is ír:
    call "C:\Program Files\Microsoft Visual Studio 8\VC\vcvarsall.bat" cd liveMedia nmake /B -f liveMedia.mak cd ../groupsock nmake /B -f groupsock.mak cd ../UsageEnvironment nmake /B -f UsageEnvironment.mak cd ../BasicUsageEnvironment nmake /B -f BasicUsageEnvironment.mak cd ../testProgs nmake /B -f testProgs.mak cd ../mediaServer nmake /B -f mediaServer.mak

    Kiemeltem azt amit módosítanod kell. Oda ugyanazt kell beírni mint az 1. pontnál a "TOOLS32 = " után, ez a gépeden a VC++ útvonala ( ilyesmi lehet: "c:\Program Files\Microsoft Visual Studio VERZIÓ_SZÁM\VC" ). Persze nem VERZIÓ_SZÁM, hanem egy szám kellene legyen ott. Mentsd el ezt a compile.bat filet és a cmd ablakból futtasd le. Gondolom pár percig eltart, amíg meglesz a fordítás és linkelés.
    Nézz bele a mediaServer, ill. a test\Progs könytárakba és ott megtalálod a lefordított exe fileokat amit majd tudsz örömmel használni.
    Ha így sem fog menni, akkor gondolom majd valaki más fog segíteni, mert én ennél többet már nem tudok.
    Mutasd a teljes hozzászólást!
  • Ja, hogy ez volt maga a buildelés...
    Ezt megcsináltam, azt innen akartam még buildelni :D
    Na faja, akkor ezt is tisztáztuk.
    Csak innen akkor a probléma más.
    Most ugye a külön mappákban 1-2-ben van .lib, a többiben csak .obj fájlok.
    Ugye a testprogik c++ fájlok, csinálok egynek egy projectet. Látom hogy mit includeol be, azokat beteszem a mappákból, de ezen felül is kér *.hh fájlokat (vagyis nem találja).
    Jó, akkor fogom azt mindent amit találtam betettem... Azt build, és rengeteg sok hiba van még ezen felül is.

    Ebben még tudnál segíteni, hogy egy ilyen test filet miként fordítsak le egy exe-vé ami aztán megcsinálja amire kitalálták?
    Köszi!
    Mutasd a teljes hozzászólást!
  • Most már tényleg túlzol.
    Azt build, és rengeteg sok hiba van még ezen felül is.

    Elolvasod az első hibát és megoldod. Újrafordítod. Ha megint hibákat kapsz kezded elölről:

    do { legelso hiba elolvasasa(); legelso hiba megoldasa(); forditas( &nHibakSzama ); } while( nHibakSzama != 0 );

    Írj be ide egy hibát, hadd lássuk mi a fene olyan nehéz benne.
    Mutasd a teljes hozzászólást!
  • Na, egy tesztprogit betettem, headereket be, libraryt a könyvtárába, fordítanám, majd az első hiba:

    " framedsource.hh(78) : error C2079: 'FramedSource::fPresentationTime' uses undefined struct 'timeval ''"

    Hát hogy mi a fene olyan nehéz, kb sehol nincs leírva, hogyha egy tesztprogit akarok használni, akkor miket kell betenni a projektbe, meg hasonló...

    Nincs kedved kipróbálni magad? Átküldöm a lefordított forráskódot, és próbálj meg plz egyetlen egy teszt progit buildelni. Biztos kihagytam valami fájlt, vagy nem includoltam be valamit, nem tudom, nem is írják mi kell pluszba, nem is tudom általánosságba mi szokott kelleni.
    Mutasd a teljes hozzászólást!
  • Átküldöm a lefordított forráskódot,

    Most akkor forráskód, vagy le van fordítva?

    Ok, küldheted, de nekem a 2005-ös nincs meg, csak a 2008 express.

    priv ment.
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd