[ toxi_programer @ 15.07.2007. 22:53 ] @
Prvobitno sam napravio program ceo u C# jeziku i sve je radilo na svakom kompu koji je imao instaliran .NET framewrork 2.0 ili noviji. Zatim sam jedan dll uradio u Managed C++ i sada program radi samo na kompjuterima na kojim ima instaliran Visual Studio. Kada se pokrene program, a ako VS nije instaliran, pojavi se ista ona poruka kao kad dođe do neobrađenog izuzetka i piše da nije pronađen fajl od kojega valjda zavis taj .dll. Dakle to sigurno nije neki fajl tipa slike ili nešto slično već u vezi .NET-a.
I sad sam zbunjen, ne znam šta treba da dostavim uz taj dll rađen u C++ for .NET-u da bi radilo.
Pravio sam sve to u Visual Studio 2005.

Imate li neku ideju?
[ Shadowed @ 16.07.2007. 00:01 ] @
Managed C++ takodje zahteva .NET Framework. Jesi li ga imao instaliranog na tim racunarima na kojima prijavljuje gresku?
[ milanche @ 16.07.2007. 00:48 ] @
Hoce da radi samo tamo gde imas instaliran VisualStudio ?

Cisto onako odoka (educated guess) sve mirise na to imas Debug verziju DLL-a.

Release verzija DLL-a bi trebalo da po default-u ima sve DLL-ove od kojih zavisi u okviru
regularne Windows instalacije, tj. ne bi ti trebao instaliran Visual Studio.

Probaj da iskompajliras Release verziju DLL-a pa javi kako radi u toj kombinaciji.

[ Dragi Tata @ 16.07.2007. 02:05 ] @
http://www.microsoft.com/downl...20b62a191ee&displaylang=en
[ toxi_programer @ 16.07.2007. 12:35 ] @
@Shadowed
Pa naravno.

@milanche
Hm, pa ja i ne znam kako da razlikujem te dve stvari? Uglavnom, imao sam jedan Solution i unutar njega par projekata. Kad hoću da ih "izgradim" idem na Build-> RebuildAll. Šta se dobija na taj način?

Dragi Tata je upravu
Hvala vam!

Nisam znao da je ovo potrebno jer sam do skora koristion VS 2003 a u njemu to nije bilo potrebno( ili je na neki način bilo "sakriveno" od mene ).
[ Dragi Tata @ 16.07.2007. 13:22 ] @
Citat:
toxi_programer
Nisam znao da je ovo potrebno jer sam do skora koristion VS 2003 a u njemu to nije bilo potrebno( ili je na neki način bilo "sakriveno" od mene :) ).


Nije bilo potrebno, ali tehnologija "napreduje" pa je sad potrebno.

Osim naravno, ako statički linkuješ CRT.
[ mmix @ 16.07.2007. 14:57 ] @
Citat:
Dragi Tata: Osim naravno, ako statički linkuješ CRT.


Zar nije ovo disabled u VS2005 zbog tog njihovog famozonog fusiona i side-by-side versioninga?

[Edit: pobrkah loncice, zaboravi da sam pitao ovo :)]

[Ovu poruku je menjao mmix dana 16.07.2007. u 16:11 GMT+1]
[ Dragi Tata @ 16.07.2007. 15:12 ] @
Nije. Mi sve linkujemo statički - klijent nam je jedan dll koji se posle poziva iz MS Worda. Evo šta kaže MSDN:

http://msdn2.microsoft.com/en-us/library/2kzt1wy3(vs.80).aspx

Edit: kasno si dodao komentar :) Verovatno si mislio na single-threaded verzije CRT-a
[ toxi_programer @ 16.07.2007. 16:48 ] @
Jako mi glupo deluje što se to ne dostavlja uz .NET framework.
Inače, pojma nemam o čemu pričate
[ Dragi Tata @ 16.07.2007. 16:51 ] @
Citat:
toxi_programer: Jako mi glupo deluje što se to ne dostavlja uz .NET framework.


Možeš da napraviš instaler iz Visual Studija i onda ti taj paket ne treba.
[ milanche @ 16.07.2007. 17:29 ] @
Citat:

Hm, pa ja i ne znam kako da razlikujem te dve stvari? Uglavnom, imao sam jedan Solution i unutar njega par projekata. Kad hoću da ih "izgradim" idem na Build-> RebuildAll. Šta se dobija na taj način?


Idi na Build->Configuration Manager, pa izaberes Release version. Posle u opcijama (Alt F7 -> C++ -> Optimization) imas nekoliko
mogucnosti optimizacije koda (Minimize Size, Maximize Speed,....) a mozes i da stavis No Optimization.

Cisto iz radoznalosti (iako znam da ce da radi po receptu Dragog Tate) - pokusaj da setujes Release verziju i rekompajliras samo
za Visual C++ DLL projekat i distribuiras ga uz ostalo bez runtime i installera, zanima me kako bi samo ta promena uticala
na krajnji rezultat (tj. da li bi radilo ili ne bez instaliranog Visual Studio-a).

Jos od Win98 su release verzije DLL-ova (Win32, MFC, ATL,...) mogle da rade samo oslanjajuci se na DLL-ove koji stizu sa
operativnim sistemom, pa mi je malo cudno da bi backward compatibility princip prestao da vazi, tim pre sto bi .NET runtime vec
trebalo da je instaliran.











[Ovu poruku je menjao milanche dana 16.07.2007. u 18:39 GMT+1]

[Ovu poruku je menjao milanche dana 16.07.2007. u 18:51 GMT+1]
[ toxi_programer @ 16.07.2007. 21:51 ] @
@Milanche
Neće da radim kad stavim Release za taj dll :(
A i veličina ista.
Opet, moguće da sam ja nešto pogrešio, ću proverim.

Dragi tata, to znači da će instaler da uključi sve potrebne "delove" pa samim tim i taj runtime?
[ milanche @ 16.07.2007. 22:10 ] @
Tatko,

(ako je tacno sto je toxi pronasao, mada ista velicina DLL-a zvuci malo cudno) stvano - zasto cak i Release verzija
zahteva bilo sta drugo osim sto vec dolazi uz Windows ?
[ Dragi Tata @ 17.07.2007. 12:36 ] @
Citat:
milanche: Tatko,

(ako je tacno sto je toxi pronasao, mada ista velicina DLL-a zvuci malo cudno) stvano - zasto cak i Release verzija
zahteva bilo sta drugo osim sto vec dolazi uz Windows ?



VC++ 2005 zahteva svoje verzije standardnih biblioteka (CRT, CPP, MFC, ATL...) a one ne dolaze uz Windows (jednostavno, novije su od XP-ja). Recimo, sa VC++ 6.0 si manje-više siguran da svaki Windows od 98 pa na ovamo ima msvcr.dll, mfc42.dll itd u System folderu, ali za novije kompajlere to baš nije tako. Sa verzijama VC 2002 i 2003 si u tom slučaju mogao da strpaš sve potrebne dllove u isti folder gde ti je i exe i to je radilo super, a sad su izmislili nekakve manifeste i koncept "side-bz-side assemblies": http://msdn2.microsoft.com/en-us/library/ms235299(VS.80).aspx

Naravno, kao što rekoh, uvek možeš da linkuješ statički i onda nema potrebe da vučeš te dllove.
[ toxi_programer @ 17.07.2007. 17:22 ] @
Znači da sam lepo podesio to što je milanče rekao ali da tako ipak neće da može
A kako, mislim gde da podesim da bude statičko linkovanje?