Názory ke článku Oracle C++ Call Interface – 2. First contact, hups connect. – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama

Názory ke článku Oracle C++ Call Interface – 2. First contact, hups connect. – Programujte.comNázory ke článku Oracle C++ Call Interface – 2. First contact, hups connect. – Programujte.com

 

Názory ke článku Oracle C++ Call Interface – 2. First contact, hups connect.

Unde   NOVÝ
29. 8. 2007

Ahoj,

fajn článek (i když asi né pro masy lidí). Docela dost mi pomohl. Ale nevyřešil mojí základní otázku: Jak skompilovat OCCI aplikaci pomocí MinGW? Mam pořád problém s knihovnami. Přesněji linker hlásí:

undefined reference to `oracle::occi::Environment::createEnvironment(oracle::occi::Environment::Mode, void*, void* (*)(void*, unsigned int), void* (*)(void*, void*, unsigned int), void (*)(void*, void*))'

Víš jak na to?

Pro ostatní čtenáře - ve Visual Studiu v nastavení linkeru záleží na pořadí v jakém jsou knihovny uvedeny (oraocci10.lib oci.lib ociw32.lib). Docela mě to vypeklo tak to uvádím pro ostatní.

sn3d   NOVÝ
1. 9. 2007

No celkovo s tymi libkami to je dost o drzku. Priznam sa ze OCCI pod MinGW som neskusal a myslim ze to tak ruzove nebude z dovodu nedostupnosti libiek. Co sa tyka portability OCI ani OCCI si v tomto velmi dobre nevedu. POd Linuxom som nemal najmensi problem vsetko zlinkovat skompilovat a vsetko frcalo na prvy sup. Co sa tyka Win32 tak tam som sa uz dobre natrapil aj ja a chcelo to dost googlit :-/ Lenze to sa jednalo o VIsual Studio. Co sa tyka Dev-cpp a podobnych, fakt neviem ci to vobec je mozne. Inac na nete (asi z tohto dovodu) je mnozstvo OCI a OCCI portovatelnych wrapperov. Mozno by v tomto pripade bolo lebsie siahnut po tychto wrapperoch ktore su uz naportovane na kadeco.

Unde   NOVÝ
2. 9. 2007

Hrál jsem si s tím jeden celý den a závěr je takový, že to prakticky nejde. MinGW kompilátor (v. 3.4) nedokáže přilinkovat .lib knihovny pro MS Visual Studio, podporuje jen .a. Použití knihoven pro Linux také není možné protože je třeba spousta .so dynamických knihoven (nevím jestli z nich nějak lze udělat statické). Tak jsem zkusil toto:

1. Z oci.lib, ociw32.lib, oraocci10.lib jsem vyextrahoval definice (.def):



echo EXPORTS > %1.def
nm %1.lib | sed -n "/00000000 T/s/\([^_]*_\)//p" >> %1.def

kde %1 je název knihovny bez přípony (je k tomu nutné mít binutils (nm) z MinGW a sed portovaný na win)

2. Pomocí dlltool (součást binutils) zkusil konverzi:


dlltool -D %1.dll -d %1.def -l %1.a


to proběhlo OK pro oci.lib, ociw32.lib. S oraocci10.lib byl problém - chyba .def souboru. Tak jsem zkoušel .def získat pomocí objdump z oraocci10.dll a toto dll-ko poté zkonvertovat do statické .a. Narazil jsem na stejný problém tak jsem ještě zkusil pexports, ale ten skončí při exportu .def neodchycenou vyjímkou. Tak jsem nakonec šáhnul po MS Visual Studiu 2005 Express a použil jeho utilitku dumpbin v kombinaci se sedem:


echo EXPORTS > %1.def
dumpbin /exports %1.dll | sed -nf exp_flt.sed >> %1.def

, kde exp_flt.sed obsahuje:


/[ ]*ordinal hint/,/^[ ]*Summary/{
/^[ ]\+[0123456789]\+/{
s/^[ ]\+[0123456789]\+[ \t]\+[0123456789ABCDEFabcdef]\+[ ]\+[0123456789ABCDEFabcdef]\+[ ]\+\(.*\)/\1/p
}
}


to už zabralo a získal jsem definice .def ... použil jsem dlltool a získal z oraocci10.dll statickou liboraocci10.a.

Ale i když tyto tři (.a) knihovny přilinkuju tak mi g++ hlásí nenalezené reference na Enviroment. Ruční slinkování jsem zkoušel také, ale to je na Win peklo - místo tří nenalezených referencí získám celou obrazovku :-))

Aktuálně používám na Win wxDev-C++ s tím, že jsem si nainstaloval MS C++ kompilátor (aktuálně s MS Visual Studiem 2005 Express - takže bych mohl klidně používat i toto IDE, ale nevím jak je to licenčně - pro zkoušení to stačí, ale pokud budu chtít vytvořené produkty dále šířit pod GPL tak nevím ...)

A do budoucna zkusím ještě toto:

1) MinGW obsahující gcc 2.95 (doporučeno z fora na OTN, ale pod Linux)

2) Vyzískat liboraocci10.a z oraocci10.lib a né z oraocci10.dll ... resp. doufám, že pomocí něčeho Microsoftího získám definice .def z .lib tak, že je schroupne dlltool.

3) Víc si hrát se SEDem při fitrování definic z .lib a .dll.

Přidej svůj názor

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo e-mailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Reaguješ na příspěvek:
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové názory e-mailem (pouze pro přihlášené)
Sleduj názory ke článku a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.



Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý