Extra utasítások compilernek Visual C++-ben

Extra utasítások compilernek Visual C++-ben
2009-11-26T11:55:45+01:00
2009-11-26T13:54:12+01:00
2022-11-15T19:55:38+01:00
b0c1
Sziasztok!

A következő problémával kerültem szembe: adott egy c++-ban megírt, parancssorosan futó program, ami postgresql adatbázishoz kapcsolódik. Ennek most grafikus felületet kell adni, amihez feltelepítettem egy Visual C++-t. A gond ott van, hogy a megfelelő fordításhoz a postgresql miatt ki kell adni a compilernek egy -lpq utasítást (anélkül hiába a megfelelő include-olások, a linker definiálatlan hivatkozásnak vette a postgresql függvényeket). Persze ez a probléma DevCpp-vel könnyen megoldható volt, hiszen a Compiler beállításai között van lehetőség extra utasítások kiadására. A gond ott van, hogy a Visual C++ 2008 Express Editionban sehol nem találok lehetőséget ilyenre. Ötletek, hogy hogyan lehetne ezt megoldani?
Mutasd a teljes hozzászólást!
A Project Properties -> Configuration Properties -> Linker -> General -> Additional Library Directories-nel add meg a .libet tartalmazo mappat, a masiknal meg csak a fajlnevet! Ha nem mukodik, az elso beallitasnal tedd "-ek koze a mappat!
Mutasd a teljes hozzászólást!

  • kell adni a compilernek egy -lpq utasítást


    Ez egy gcc-specifikus kapcsolo, es a linkernek szol, utasitja, hogy a progihoz linkelje hozza a pgsql libet.

    VC++-ban ez valahol a proiject settings-ben van, valami input->additional libraries talan...
    Mutasd a teljes hozzászólást!
  • Ha a Project Properties -> Configuration Properties -> Linker -> General -> Additional Library Directories-re gondolsz, akkor megtaláltam, és kipróbáltam, hogy ott is megadom a megfelelő elérési útvonalat, de a probléma továbbra is fent áll.

    Konkrét példa a hibaüzenetre:

    warning LNK4248: unresolved typeref token (0100002C) for 'pg_conn'; image may not run

    error LNK2028: unresolved token (0A000015) "extern "C" struct pg_conn * __clrcall PQsetdbLogin(char const *,char const *,char const *,char const *,char const *,char const *,char const *)" (?PQsetdbLogin@@$$J0YMPAUpg_conn@@PBD000000@Z) referenced in function "private: void __clrcall proba::Form1::kapcsolodas_Click(class System::Object ^,class System::EventArgs ^)" (?kapcsolodas_Click@Form1@proba@@$$FA$AAMXP$AAVObject@System@@P$AAVEventArgs@4@@Z)
    Mutasd a teljes hozzászólást!
  • Ha a Project Properties -> Configuration Properties -> Linker -> General -> Additional Library Directories-re gondolsz


    Nem, itt csak a libeket tartalmazo konyvtarat adhatod meg, a masik, ahol a .lib nevet adod meg, talan a linker/input-nal van!
    Mutasd a teljes hozzászólást!
  • Találtam egy Project Properties -> Configuration Properties -> Linker -> Input -> Additional Dependencies mezőt.

    Ide beírva a libpq.lib-et a teljes elérési útvonalával fatal errort dob. Kipróbáltam a dos-os, 8 karakteres, rövid mappanevekkel, de úgyis fatal error. Ide-oda másolgatás sem segített továbbra is annyi a reakciója, hogy:

    fatal error LNK1104: cannot open file 'libpg.lib'

    pedig az elérési útvonal tuti stimmel. Rossz helyre írom?
    Mutasd a teljes hozzászólást!
  • A Project Properties -> Configuration Properties -> Linker -> General -> Additional Library Directories-nel add meg a .libet tartalmazo mappat, a masiknal meg csak a fajlnevet! Ha nem mukodik, az elso beallitasnal tedd "-ek koze a mappat!
    Mutasd a teljes hozzászólást!
  • Előző sztornó, q helyett g-t írtam.

    Ezt javítva már megtalálja, de az eredmény csak annyi, hogy a korábbi hibaüzenetekhez még hozzátesz egy rakás ilyet:

    error LNK2031: unable to generate p/invoke for "extern "C" struct pg_conn * __clrcall PQsetdbLogin(char const *,char const *,char const *,char const *,char const *,char const *,char const *)" (?PQsetdbLogin@@$$J0YMPAUpg_conn@@PBD000000@Z); calling convention missing in metadata
    Mutasd a teljes hozzászólást!
  • VC++-kompatiblis .lib-re lesz szukseged, ha nincs ilyened alapbol, magadnak kell ujraforditanod a pgsql kliens libet vc++-al...

    Szerk: .netes progit akarsz kesziteni..? Ha nem, vc++ Expressben sem lesz sokkal egyszerubb a GUI!
    Mutasd a teljes hozzászólást!
  • Nem ragaszkodnék a .net-hez, viszont még soha nem programoztam winapi-t, a progi viszont jövő hétre kell. Windows Forms Applicationként gondoltam megoldani, mert ez tűnik a legegyszerűbb megoldásnak. (Nem túl elegáns, de legalább tudnak benne klikkelni :P)

    VC++ kompatibilis lib gyártását hogyan kellene megoldani?

    (Amúgy köszi, hogy ilyen kitartóan segítőkész vagy, lekötelezel. :))
    Mutasd a teljes hozzászólást!
  • Ha winforms-os projectet kezdtél, akkor már akár akarod, akár nem az .NET lesz. Akkor meg már egyszerűbb beszerezni egy .NET-es DLL-t.
    Mutasd a teljes hozzászólást!
  • Tudom, hogy .net lesz. Azt írtam, hogy nem ragaszkodnék, viszont! ... Szóval az egyszerűség és a gyorsaság miatt mégis inkább.

    Na, akkor majd megpróbálom beszerezni a kellő dll-t. Köszi szépen a segítséget!
    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