Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

MFC static vs dynamic linking

[es] :: C/C++ programiranje :: MFC static vs dynamic linking

[ Pregleda: 2268 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

inostranac

Član broj: 141142
Poruke: 35
*.kolej.mff.cuni.cz.



Profil

icon MFC static vs dynamic linking30.03.2008. u 01:22 - pre 195 meseci
Pozdrav svima!

Evo, ovako stoje stvari:

Imam par dll-ova i glavni program koji radi sa njima kao pluginovima (ucita sve dll-ove koji se nalaze u odredjenom direktorijumu...). Sve sam ih pravio kao Regular DLL with shared MFC DLL. Naravno, to sve ne funkcionise na kompu koji nema instaliran MFC. Problem je sto sam pokusao da na takvoj masini iskopiram sve moguce i nemoguce dll-ove u direktorijum sa programom ali i dalje ne radi. Stalno izbacuje poruku Error executing program.

Onda sam pokusao da sve preuredim u MFC statically linked (ukljucujuci i glavni program). Naizgled se sve lepo ucita, ali pri prvom pokusaju (na bilo kom kompu) da pozovem neku funkciju iz dll-a program se prekida sa obavestenjem tipa corrupted heap address. (Pri dinamickom povezivanju sa MFC-om na mom kompu sve radi savrseno).

Da li neko zna u cemu bi mogao da bude problem i kako da ga resim?

Hvala unapred!
 
Odgovor na temu

milanche
San Francisco

Član broj: 2447
Poruke: 1200
*.hsd1.mn.comcast.net.



+1001 Profil

icon Re: MFC static vs dynamic linking30.03.2008. u 04:58 - pre 195 meseci
Citat:
Naravno, to sve ne funkcionise na kompu koji nema instaliran MFC


Ako si ih kompajlirao u Debug verziji, dobices upravo to sto si opisao. Ako bi probao
da ih kompajliras u Release verziji, trebale bi da rade i bez instaliranog VisualStudio-a.

U principu se preporucuje da i aplikacija i DLL-ovi budu oba Release ili oba u Debug verziji.
Video sam nekoliko gadnih problema koji nastaju ako je aplikacija Debug a DLL Release
(a cini mi se i kod obratne kombinacije).
 
Odgovor na temu

deerbeer
Beograd

Član broj: 174418
Poruke: 1189
*.adsl-a-1.sezampro.yu.



+395 Profil

icon Re: MFC static vs dynamic linking30.03.2008. u 10:20 - pre 195 meseci
Kad radis sa MFC DLL imas 2 opcije :
1)Shared MFC ( onda sa aplikacijom isporucujes MFC Redistributable Package .. pogledaj na msdn-u).
Nikako ne dolazi u obzir kopiranje "mogucih i nemogucih" dll na klijentsku masinu (napravices haos)
2)Static linked MFC (DLL-ovi su veci al klijent ne mora da ima instaliran MFC package ) .

Sto se tice "corrupted heap address" probaj na tvojoj masini da ti radi u Release verziji u oba slucaja (DLL i EXE)
Jer veoma moguce je da si probao Debug verziju na svojoj masini pa onda release verziju na drugoj masini i ne radi
Ovde imas detaljno o debug i release verziji i mogucim problemima :
http://www.flounder.com/debug_release.htm

Viva lollapalooza
 
Odgovor na temu

inostranac

Član broj: 141142
Poruke: 35
*.kolej.mff.cuni.cz.



Profil

icon Re: MFC static vs dynamic linking30.03.2008. u 18:41 - pre 195 meseci
Hvala na odgovorima.

Problem nije u tome da su neki DLL-ovi u Debug a neki u Release verziji. Vodio sam racuna o tome.
Na kraju sam sve ostavio sa Shared DLL, a skinuo sam vcredist_x86.exe i instalirao ga na masini koja nema VC++.
Malo je falilo da sve prodje savrseno, program se pali normalno, dll-ovi se ucitavaju normalno, ali primetio sam da se program nasumicno gasi pri otvaranju nekih tekstualnih fajlova.
Na mom kompjuteru se to nijednom nije desilo.

Da li slucajno znate zbog cega bi to moglo biti i da li postoji neko resenje u kome ne mora nista da se instalira pre pokretanja programa vec samo da se odredjeni fajlovi salju zajedno sa programom?
 
Odgovor na temu

prog
Bihac

Član broj: 106882
Poruke: 77
92.36.240.*



Profil

icon Re: MFC static vs dynamic linking25.04.2008. u 22:56 - pre 194 meseci
da bi MFC aplikaciju distribuirao na PC koji nema VS (koliko se sjecam), potrebno ti je da uz exe i tvoje dllove priljepis sljedeće dll ove

1.MFC71.dll
2.msvcp71.dll
3.msvcr71.dll

Zadnji brojevi 71 oznacavaju verziju visual studia 2003. Ako se radi o Visua Studio 2005 tada je verzija 80 a ako je vs 2008 tada je verzija 90.

Ovo vrijedi ako ne koristis nikakve dodatne biblioteke konekcije sa bazom podataka, ili neke druge servise.

Sto se tice tvog prvog pitanja mislim da to nije nesto u redu s tvojom aplikacijom, i mislim da nije do sistemskih dllova.
 
Odgovor na temu

deerbeer
Beograd

Član broj: 174418
Poruke: 1189
*.adsl-3.sezampro.yu.



+395 Profil

icon Re: MFC static vs dynamic linking26.04.2008. u 00:12 - pre 194 meseci
I ja sam probao jednom tako :) ..al nije 100% sigurno .. zato i postoji vcredist_x86.exe
Nemas preterano velikog razloga za dynamic MFC link-ovanjem a samim tim i za kopiranjem nekog od mfcxxx-dll-a
Jeste da su dll-ovi manji (brze se load-uju) ali ako ih imas svega nekoliko ta razlika je vrlo mala.
Static linking se malko sporije load-uje al' nema da te boli glava da li ce raditi na klijentskoj masini :)


Viva lollapalooza
 
Odgovor na temu

[es] :: C/C++ programiranje :: MFC static vs dynamic linking

[ Pregleda: 2268 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.