Porting da Code :: Blocks a Visual Studio 2010

Supponiamo di avere un C: B C ++ open source (non C ++ 11, perfettamente compatibile con lo standard ISO 1998) che ho scaricato che utilizza MinGW / GCC (TDM-1 4.7.1 o 4.7.2 – non funziona con la versione più recente) ,; posso portare i file sorgente da esso a Visual Studio 2010 ed essere in grado di farlo funzionare senza la riscrittura di codice enorme? O ci sono alcuni casi in cui non sarà ansible? O dipende da varie cose?

EDIT: il codice si basa su ulteriori utilità e librerie esterne come:

  • Lua
  • SDL 2.0 + SDL Image 2.0
  • OpenGL

La risposta più generale e corretta è: dipende da varie cose .

A quale tipo di progetto ti riferisci? È wxWidget, QT4, GTK +, OpenGL? Quanto usi il c ++ 11?

Supponendo che stiamo parlando di una semplice Console Application il modo più semplice per verificare se è ansible migrare a MSVC2010 è passare al compilatore all’interno del progetto Code :: Blocks.

Seleziona Project->Build Option... e sotto Selected compiler scegli Microsoft Visual Studio C++ 2010 . Successivamente prova a ricompilare. L’avviso e gli errori ti mostreranno quanto sarà facile il porting.

Ovviamente devi installare anche Code :: Blocks con MSVC2010.

EDIT: la libreria OpenGL è supportata da MSVC2010 e libsdl ha librerie di sviluppo VC. Tuttavia, le cose sembrano essere più complesse con Lua. La mia ipotesi è che potresti iniziare un sostanziale lavoro di porting qui.

Se il progetto è stato scritto utilizzando un codice C ++ 98 portatile, non dovresti avere troppi problemi. Per prima cosa, vorrei verificare che tu possa compilare in GCC con -std=c++98 -pedantic flags e correggere eventuali avvisi per assicurarti di non fare affidamento su alcuna estensione GCC.

Dipende anche dalla portabilità di tutte le librerie richieste.

Provalo!

Se il tuo codice è conforms allo standard e non si basa su estensioni GCC o librerie specifiche di GCC, allora dovresti essere pronto all’uso.

Si noti però che diversi compilatori supportano C ++ in modi diversi; ad esempio, anche Visual Studio 2013 ha solo il supporto per C ++ 11, quindi se il tuo programma è un programma C ++ 11 con cose come gli elenchi di intervalli e inizializzatori allora, a seconda della versione che stai usando , è solo non funzionerà senza che quei pezzi di codice vengano riscritti per sembrare più simili a C ++ 03.

In realtà ho commesso un errore: C :: B in effetti mi ha detto che c’erano diversi errori nel tentativo di compilazione con il compilatore MSVC2010, perché il codice includeva molte librerie solo per Unix, troppo complicate per essere facilmente evitate. Pertanto, sto pensando di far funzionare MinGW / GCC in Visual Studio stesso o di incollare C :: B.

(Continua qui: intestazioni POSIX (dal progetto MinGW) in Visual Studio 2013 )