Spuštění programu z VC++ na jiném PC – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Spuštění programu z VC++ na jiném PC – C / C++ – Fórum – Programujte.comSpuštění programu z VC++ na jiném PC – C / C++ – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
Matěj Pácha0
Super člen
4. 2. 2007   #1
-
0
-

Chci se zeptat na vaše zkušenosti se spouštění windows forms applications na jiných počítačích. Nikde jsem nečetl, že by program sestavený ve VC++ 2005 (samozřejmě s PSDK a .NET 2.0) neběžel na jiném počítači. Program se nestačí ani inicializovat (končí na prvním zavolání nastavení Application::XXX). To musím kvůli programu o velikosti 500kB instalovat 500MB SDK nebo celé .NET 2.0??? Pokud by mi někdo mohl poradit, kdyby náhodou existovalo nastavení kompilátoru nebo linkeru, byl bych vděčný. Našel jsem na MSDN /clr: s nějakým parametrem, který ale v Project properties nenastavím. Pak jsem ještě našel nastavení pro VC#, které u VC++ neexistuje. Upřesním, že mám VC++ Express Edition. Jinak aplikace se ve VC++ dělá fakt pěkně, v podstatě ani pro mě, mírně pokročilého začátečníka :P, to nebyl takový problém. Ale na tohle asi nepřijdu...
Díky

Nahlásit jako SPAM
IP: ...–
Ajem tíčr, andrgraund tíčr!
Reklama
Reklama
Matěj Pácha0
Super člen
4. 2. 2007   #2
-
0
-

Tak, jako na potvoru, jsem už něco našel:

There are basically two ways of redistributing VC++ libraries on another computer.
1) Deploying DLLs as private assemblies in application local folder.
2) Using Merge Modules and Setup Project to create an MSI and bootstrapper (setup.exe) that installs them as a shared side-by-side assemblies.

In VS2003 and earlier 1) means copying DLLs from System32 to applicaiton local folder on another computer. In VS2005 this is not going to work, you need to copy manifest and DLLs for this assembly from \vc\redist\x86. There is a sample on MSDN in Deployment application section that talks about this in details. Basically you need to do something like:

Create a folder on a Computer 1 exactly how you would like it to be on target Computer 2 or Computer 3.
In my example, I am going to create \bin and copy myapplication.exe there, then \bin\mylibrary and copy MyLibrary.dll there.
From "C:\Program Files\Microsoft Visual Studio 8\VC\Redist\x86" directory copy Microsoft.VC80.CRT and Microsoft.VC80.MFC under \bin and \bin\MyLibrary. For deploying 64bit apps to 64bit OS, use \vc\redist\amd64 or \vc\redist\ia64. For Debug, use dlls from \vc\nonRedist.
Copy \bin folder to a target computer (either Computer 2 or Computer 3)
On Computer 2, your application should run just fine
On Computer 3, Microsoft.VC80.CRT and Microsoft.VC80.MFC has to be on the path.

In both VS2003 and VS2005 (Express and non-express), 2) mean creating a new Setup Project, adding your files and add corresponding merge module. Something like this

Create Setup and Deployment Project
File->New Project -> Other Project Types -> Setup and Deployment -> Setup Project
Add EXE and DLL to the project and specify where they should be installed on the target computer
Project->Add->File
Find folder with MyApplication.exe and MyLibrary.DLL, select them both.
In File System window, right click on Application Folder and Create new folder called MyLibrary (because this is a part of my example. Don't do this if you don't want to).
Click on Application Folder again, select MyLibrary.DLL and drag it with mouse cursor to MyLibrary folder
In Solution Explorer, under your project in Detect Dependencies you should see that IDE detects dependencies on MFC80.dll and MSVCR80.dll. You need to add corresponding Merge Modules for these DLLs.
Project ->Add->Merge Module
In opened dialog select Microsoft_VC80_CRT_x86.msm and Microsoft_VC80_MFC_x86.msm. For debug these are Microsoft_VC80_DebugCRT_x86.msm and Microsoft_VC80_DebugMFC_x86.msm. For 64bit apps to 64bit OS, select MSM of the corresponding platform. For x64, Microsoft_VC80_CRT_x86_x64.msm and Microsoft_VC80_MFC_x86_x64.msm. For Itanium, Microsoft_VC80_CRT_x86_ia64.msm and Microsoft_VC80_MFC_x86_ia64.msm.
Build it (F7 or Build->Build Solution).
Now if you run setup.exe on another computer it will deploy your application and dependent DLLs.

the \vc\redist folder has been added after Beta 2, but Merge Modules can be found in Common Files\Merge Modules.

Thanks,
Nikola
VC++

http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=54317&SiteId=1

Nahlásit jako SPAM
IP: ...–
Ajem tíčr, andrgraund tíčr!
Matěj Pácha0
Super člen
5. 2. 2007   #3
-
0
-

Tak tenhle postup zas tak moc nefunguje. Pomůže stáhnout si redistribuci .NET příslušné verze a cílový počítač ji nainstalovat. Dále je nutné na cílovém počítači nainstalovat knihovny MSVC++ pomocí aplikace z VC\redist adresáře (nebývá obvyklou součástí, dá se stáhnout - hledejte na msdn "redistribution" nebo "deploy"
Další problémy se dají řešit podle http://forum.builder.cz/read.php?23,1892969
Daleko lépe to řeší placené verze Visual Studia - dokážou vytvořit instalátor, který všechny potřebné knihovny nainstaluje. Dokonce dokáže vynutit i instalaci chybějící verze .NET. Ale to nám, chudým studentům, zůstává zapřeno...

Nahlásit jako SPAM
IP: ...–
Ajem tíčr, andrgraund tíčr!
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, 75 hostů

Podobná vlákna

Spusteni programu v c — založil Anonymní uživatel

Spuštění programu — založil Kenvelo

Spusteni programu — založil Tom9k

Moderátoři diskuze

 

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