Nacitanie objektu z DLL – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Nacitanie objektu z DLL – C / C++ – Fórum – Programujte.comNacitanie objektu z DLL – C / C++ – Fórum – Programujte.com

 

farki
~ Anonymní uživatel
3 příspěvky
4. 8. 2008   #1
-
0
-

Zdravim.
Nacitam kniznicu funkciou LoadLibrary() a adresy funkcii a premennych GetProcAddress(), ale neviem ako nacitat objekty, ktore su v kniznici. Mate nejake napady?

Nahlásit jako SPAM
IP: 212.55.247.–
Jura
~ Anonymní uživatel
637 příspěvků
4. 8. 2008   #2
-
0
-

zdravím,

pokud těmi objekty myslíš třídy, tak to máš bohužel smůlu protože dynamicky přes(GetProcAddres) tříy nelze načítat. Lze to sice obejít, tak že budeš vracet pointer na nějaký objekt vytvořený pomocí new v knihovně přes nějakou tebou definovanou funkcí, ale asi s tím budou akorát problémy, protože jej budeš muset uvolnit zase nějakou funkci knihovny(je to kvůli tomu, že pointery alokovány v knihovně nelze mazat přes delete/free volaném ve tvém klientském programu - nejedná se totiž o pointry pochazející z lokálního heapu). Mnohem lepší je použít příslušný *.lib a *.h soubor a kompleně se vysrat na GetProcAddress.

Nahlásit jako SPAM
IP: 85.207.192.–
farki
~ Anonymní uživatel
3 příspěvky
4. 8. 2008   #3
-
0
-

To Jura : lenze ja v tom DLL-ku mam nejake objekty(triedy),ktore ovladaju hardware,cize obsahuju nejake metody,ktore dany hardware napr zinicializuju..ja skratka potrebujem ziskat ich adresu, a ovladat ich, nepotrebujem ich uvolnovat

Nahlásit jako SPAM
IP: 212.55.247.–
Jura
~ Anonymní uživatel
637 příspěvků
4. 8. 2008   #4
-
0
-

Takže ještě jednou. Dll knihovny lze připojit k programu dvěma způsoby:

1) Implicitní připojení
2) explicitní připojení

Implicitní připojení

K tomu abych mohl použít Implicitní připojení musím mít k dispozici k *.dll příslušný *.lib a *.h soubor. *.h obsahuje všechny deklarace fcí a tříd a lib obsahuje jen odkazy na implementaci do *.dll .
Postup práce s knihovnou je pak jednoduchý:
1) přilinkuju *.lib soubor k projektu
2) includuju *.h soubor
3) pracuju s funkcemi naprosto normálně - nepoužívam GetProcAddress

explicitní připojení
Tento typ se obvykle používá, když nemám k dispozici *.lib a *.h soubor. Funkce se vyhledávají právě pomocí GetProcAddress - bohužel nejde načítat TŘÍDY.

Takže pokud máš k dispozici *.lib a *.h soubor k té knihovně, tak se vyser na GetProcAdress. Pokud nemáš a psal jsi ji sám, tak si nech kompilátorem vygenerovat příslušné *.lib a *.h soubory. A pokud jsi autorem knihovny a z nějakého důvodu nechceš uvolňovat *.lib a *.h soubor, tak napiš a pak se pokusím ti poradit dále.

Nahlásit jako SPAM
IP: 85.207.192.–
farki
~ Anonymní uživatel
3 příspěvky
5. 8. 2008   #5
-
0
-

To Jura :
vdaka za vysvetlenie

ja nie som autorom kniznice..dnes som cital nieco o COM automation technologii..nedalo by sa to nejako vyriesit tym? alebo mas este nejake ine napady?

Nahlásit jako SPAM
IP: 212.55.247.–
sisak
~ Anonymní uživatel
2 příspěvky
29. 8. 2008   #6
-
0
-

To Jura :
zdravim, potrebuju volat funkce z C# DLL v C++. Otazka tedy jak to muzu udelat, kdyz nemam lib ani h ? GetProcAddress mi nic nevrati :(

Nahlásit jako SPAM
IP: 195.47.35.–
czbero0
Stálý člen
29. 8. 2008   #7
-
0
-

Loadovat .NET knihovny z nativního kódu? Jsi se zbláznil?

Nahlásit jako SPAM
IP: 62.240.178.–
http://moddb.com/mods/police-brutality/
sisak
~ Anonymní uživatel
2 příspěvky
2. 9. 2008   #8
-
0
-

To czbero : Takze neni mozny zpusob jak to udelat ? Snad DLL by mela byt pouzitelna at je napsana v cem chce nebo se pletu ?

Nahlásit jako SPAM
IP: 195.47.35.–
dannyk0
Věrný člen
2. 9. 2008   #9
-
0
-

Pletes,protoze nema .NET knihovna nema spravny COM interface pro komunikaci.Pro nacitani dll z netu by sis musel udelat nejaky wrapper v c++/CLI (c++.NET)

Nahlásit jako SPAM
IP: 85.135.97.–
Jedu v c++,c#,assembler,ASP.NET,PHP,databaze,bezpecnost softwaru[br] -----------------------------------------------------------[br] Muj blog o programovani,hudbe a vsem moznem,co najdu na netu :) [br] http://dannyk.aspone.cz[br] -----------------------------------------------------------[br] Na foru mam nejake prispevky pod nickem Master,tak jen pro upresneni :)
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×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:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 85 hostů

Podobná vlákna

Nacitanie .dll v SharpDevelop — založil Johnnny

Načítanie funkcie z vlastnej dll — založil Tocimanko

Import dll do me dll — založil VladislavK

Moderátoři diskuze

 

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