Builder.cz - Informacni server o programovani

Odběr fotomagazínu

Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!

 

Zadejte Vaši e-mailovou adresu:

Kamarád fotí rád?

Přihlas ho k odběru fotomagazínu!

 

Zadejte e-mailovou adresu kamaráda:

Soutěž

Sponzorem soutěže je:

IDIF – vaše škola fotografie

 

Kdo lektoruje pražský letní workshop v ZOO a Botanické zahradě?

V dnešní soutěži hrajeme o:

Dárkový certifikát v hodnotě 1000 Kč



Zavislost lib

Seznam témat     Nová odpověď

Přihlásit se     Registrace     Zapomenuté heslo

Re: Zavislost lib

Autor: JiriValerian

8:55:55 13.10.2009

[color=#008000]jurin Napsal:
-------------------------------------------------------
> Děkuji pane Valerian.
>
> Nevím jestli jsem dobře pochopil ten Váš popis,ale
> já to dočasně vyřešil,že v první dll knihovně jsem
> nadefinoval ukazatel na funkci a tento ukazatel na
> funkci si držím jako private členský prvek třídy
> C_Test_A.Dále jsem ve třídě C_Test_A udělal public
> metodu na inicializaci tohoto členského prvku.Ted
> už nevolám metodu C_Test_B::AddReq ale ukazatel na
> tu funkci co mám jako členský prvek.Tím to můžu
> slinkovat a nepotřebuji lib té druhé dll
> knihovny.Ještě v hlavním exe modulu musím provést
> inicializaci toho ukazatele na funkci.
> Ale toto řešení si mi nelíbí,protože si zbytečně
> musím držet ten ukazatel na funkci a ještě v
> hlavním modulu musím dělat tu inicializaci.
>[/color]

Ano to jste pochopil správně. Přesně tak jsem to myslel.

[color=#008000]>
> Asi obě třídy sloučím do jedné dll knihovny a bude
> po problému.
>[/color]

Ano i to je řešení.

Citovat příspěvek

 

Re: Zavislost lib

Autor: jurin

8:48:41 13.10.2009

Děkuji pane Valerian.

Nevím jestli jsem dobře pochopil ten Váš popis,ale já to dočasně vyřešil,že v první dll knihovně jsem nadefinoval ukazatel na funkci a tento ukazatel na funkci si držím jako private členský prvek třídy C_Test_A.Dále jsem ve třídě C_Test_A udělal public metodu na inicializaci tohoto členského prvku.Ted už nevolám metodu C_Test_B::AddReq ale ukazatel na tu funkci co mám jako členský prvek.Tím to můžu slinkovat a nepotřebuji lib té druhé dll knihovny.Ještě v hlavním exe modulu musím provést inicializaci toho ukazatele na funkci.
Ale toto řešení si mi nelíbí,protože si zbytečně musím držet ten ukazatel na funkci a ještě v hlavním modulu musím dělat tu inicializaci.

Asi obě třídy sloučím do jedné dll knihovny a bude po problému.

Citovat příspěvek

 

Re: Zavislost lib

Autor: JiriValerian

18:58:21 12.10.2009

[color=#008000]jurin Napsal:
-------------------------------------------------------
> Zdravím,
> Mám dvě dll knihovny.
> První exportu třídu class C_Test_A a druhá
> exportuje třídu class C_Test_B.
> Tyto třídy si vyměnují data,tak že si volají
> navzájem static metody.
> To znamená,třída C_test_A přípraví data a zavolá
> static metodu třídy C_Test_B::AddReq.
> Potom třída C_Test_B tyto data zpracuje,připraví
> data jako odpověd a volá static metodu třídy
> C_Test_A::AddRsp.
>
> Abych slinkoval první dll knihovnu(C_Test_A)
> potřebuji lib soubor z druhé dll knihovny.
> A opačně,abych slinkoval druhou dll
> knihovnu(C_Test_B) potřebuji zase lib soubor první
> dll knihovny.
>
> Ono je to v praxi ještě trochu komplikovanější,ale
> toto je podstata problému.
> Ví někdo jak z toho ven?
>
> Díky moc.
>
> Jurin
>[/color]

Tak, že ty třídy předěláte takovým způsobem, aby na sobě nebyly přímo závislé z hlediska linkování a ukazatele na ty statické metody se mohou nastavovat přes nějakou metodu v obou těch třídách jako ukazatele na obyčejné funkce jejichž prototyp bude jen deklarován v nějakém hlavičkovém souboru. Fyzické propojení se provede až za běhu v programu, který obě knihovny bude používat a toto propojení provede zavoláním příslušných metod a předáním příslušných ukazatelů.

Citovat příspěvek

 

Zavislost lib

Autor: jurin

18:29:25 12.10.2009

Zdravím,
Mám dvě dll knihovny.
První exportu třídu class C_Test_A a druhá exportuje třídu class C_Test_B.
Tyto třídy si vyměnují data,tak že si volají navzájem static metody.
To znamená,třída C_test_A přípraví data a zavolá static metodu třídy C_Test_B::AddReq.
Potom třída C_Test_B tyto data zpracuje,připraví data jako odpověd a volá static metodu třídy C_Test_A::AddRsp.

Abych slinkoval první dll knihovnu(C_Test_A) potřebuji lib soubor z druhé dll knihovny.
A opačně,abych slinkoval druhou dll knihovnu(C_Test_B) potřebuji zase lib soubor první dll knihovny.

Ono je to v praxi ještě trochu komplikovanější,ale toto je podstata problému.
Ví někdo jak z toho ven?

Díky moc.

Jurin

Citovat příspěvek

 

 

 

Přihlášení k mému účtu

Uživatelské jméno:

Heslo: