Domanda

I hanno costruito un programma in Microsoft Visual Studio 2005 e funziona benissimo.

Il problema che sto avendo è la macchina ha bisogno di essere utilizzato su esegue Windows 98. Per quanto mi riguarda posso dire che ho bisogno di installare il ridistribuibile per VC ++. Posso installare il ridistribuibile su Windows 98 o c'è un modo per farlo funzionare su Windows 98?

È stato utile?

Soluzione

Sì, le applicazioni compilata con VS 2005 lavoro perfettamente bene su Windows 98 e Me. Ho eseguito alcuni di loro me stesso, e continuare a VS 2005 in giro ed ho installato proprio per questo scopo. versione 2005 del CRT ridistribuibili è supportato fin di Windows 98.

Il trucco è che è necessario compilare l'applicazione per il set di caratteri multi-byte (MBCS) . Non funzionerà se compilato come Unicode, che è l'impostazione di default del progetto. le piattaforme Windows 9x non supportano Unicode senza qualche aiuto extra. Si dovrebbe essere in grado di modificare le impostazioni di progetto e di andare bene, ma se hai scritto il codice per assumere Unicode, allora avrete un problema.

Questo è il motivo per cui è necessario utilizzare tipi di carattere generico e le funzioni definite in tchar.h, piuttosto che i loro equivalenti caratteri larghi che sono preferiti per Unicode costruisce. definire sempre stringhe utilizzando il tipo TCHAR (o LPTSTR o LPCTSTR tipi), che viene definito per condizionatamente wchar_t o char, come appropriato. Usare le funzioni di manipolazione delle stringhe che iniziano con _tcs..., piuttosto che quelli specifici per i caratteri larghi o stretti. Assicurarsi che quando si chiama funzioni, chiami sempre le versioni generiche typedef'ed, piuttosto che l'ANSI o quelli a livello di specifiche tal fine con una A o di un suffisso W.

Può essere un sacco di lavoro per tornare indietro e correggere questo se non l'avete fatto fin dall'inizio. Se questo è il caso, si potrebbe esaminare la Microsoft Strato per Unicode su Windows 95/98 / ME sistemi , che fornisce un livello di astrazione che permette di chiamare funzioni Unicode sui sistemi operativi Windows 9x legacy dove non sono supportati in modo nativo.

Al di là di Unicode / MBCS, l'unica cosa a cui fare attenzione è che non stai chiamando le funzioni che non esistevano in via del ritorno Win32 API di Windows nei 98 giorni. Non ti puoi fidare ciò che la documentazione in linea di MSDN si racconta per la "versione minima supportata cliente" più, perché Microsoft non è più supporto è Windows 98. Tutti del SDK docs dire che la versione minima supportata è Windows 2000 ora, e si sa che non è corretto. L'intero API non è stato introdotto più tardi W2K. Al fine di ottenere informazioni accurate, è necessario ottenere una versione della documentazione SDK; ciò che è venuto con l'installazione di VS 2005 dovrebbe andare bene. Le informazioni ci va indietro almeno fino a Win 98, se non 95 (non ricordo esattamente).

Per le istanze in cui si desidera chiamare le funzioni che non esistevano nel Windows 98 quando si è in esecuzione su sistemi più recenti in cui sono a disposizione, è necessario fare particolare attenzione alla chiamata li in modo dinamico , piuttosto che aggiungendo alla tabella di importazione DLL dell'applicazione (quello che il linker fa generalmente in modo automatico). Ciò significa definire puntatori a funzione da soli, e utilizzando il LoadLibrary e funzioni GetProcAddress chiamarli. Non è divertente, ma non di lavoro.

In alternativa, è possibile configurare il linker a "carico" di ritardo le librerie (verificare le proprietà del vostro progetto). Questo è molto più conveniente, ma, ovviamente, avrete bisogno di garantire che si solo richiamare le funzioni che sono disponibili sul sistema operativo di destinazione, altrimenti l'applicazione andrà in crash.

In entrambi i casi, il funzione GetVersionEx vi dirà tutto ciò che si bisogno di conoscere le ope host correntesistema di rating in modo che il codice può prendere strade diverse (si chiamano le funzioni più recenti, se disponibile, o cadere di nuovo a quelli più anziani, se non) a seconda dell'ambiente. Ciò consente di supportare le nuove funzionalità su nuovi sistemi, pur mantenendo qualunque sia il grado di supporto per i sistemi operativi legacy è appropriato. Troverete un sacco di dichiarazioni if nella base di codice quando questo è fatto a destra. : -)

Altri suggerimenti

Sì, è possibile http://www.microsoft.com/ download / it / Details.aspx? id = 3387 (Microsoft Visual C ++ 2005 Redistributable Package (x86))

Sistemi operativi supportati: Windows 2000 Service Pack 3, Windows 98 , Windows 98 Second Edition, Windows ME, Windows Server 2003, Windows XP Service Pack 2

Hai controllato i requisiti di sistema? Secondo questo link , Windows 98 dovrebbe andare bene.

Non c'è più di distribuire CRT con l'applicazione. Tutte le funzioni che si utilizzano nel programma devono essere disponibili in Windows98. Per tutte le funzioni che si trovano su MSDN troverete una "minima supportata cliente". Questo è difficile ...
Per superare problema CRT statico è possibile collegare l'applicazione (/ opzione del linker MT). Si tradurrà in un binario più grande, ma funziona.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top