Step-by-step: How to build EmulationStation on Windows
-
Is there a way to compile this onto a USB? Or is there no difference?
-
@itsnitro there's no difference, just copy all the required files into the same dir on de usb.
-
I tried to install and all steps run perfect except the last step to build ES in VS 2015 these are the errors are shown. How can I fix:
Severity Code Description Project File Line Suppression State Error (active) identifier "open" is undefined es-core c:\src\EmulationStation\es-core\src\platform.cpp 87 Error (active) identifier "close" is undefined es-core c:\src\EmulationStation\es-core\src\platform.cpp 89 Error C3861 'open': identifier not found es-core C:\src\EmulationStation\es-core\src\platform.cpp 87 Error C3861 'close': identifier not found es-core C:\src\EmulationStation\es-core\src\platform.cpp 89 Error C2440 'initializing': cannot convert from 'const boost::filesystem::path::value_type *' to 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>' es-core C:\src\EmulationStation\es-core\src\Util.cpp 105 Error C2440 'initializing': cannot convert from 'const boost::filesystem::path::value_type *' to 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>' es-core C:\src\EmulationStation\es-core\src\Util.cpp 106
-
@ray3d please put the output in a code block (three backticks + newline, see compose?) if you want people to be able to parse this.
-
@zigurana Thank you ziguana for answer. I see what was the pro the problem was I made the build for both versions at the same time in same directory. Then what I did was only use the commands at post and on VS to only debug version and the build was made perfectly.
Now sorry for my ignorance but after I made the build of EmulationStation how do you run? I see in the debug directory these files:"nanosvgd.lib" and "pugixmld.lib" but not an exe sorry to ask but how do you run EmulationStation?
-
@ray3d
Are you sure the linking did succeed successfully after compilation? It would be good if you could post the complete build output logging (in a codeblock)
I have the following library files included in my Debug folder:- boost_date_time-vc140-mt-gd-1_61.dll
- boost_filesystem-vc140-mt-gd-1_61.dll
- boost_locale-vc140-mt-gd-1_61.dll
- boost_system-vc140-mt-gd-1_61.dll
- emulationstation.exe
- emulationstation.ilk
- emulationstation.pdb
- es-cored.lib
- FreeImage.dll
- libcurl.dll
- libvlc.dll
- libvlccore.dll
- nanosvgd.lib
- pugixmld.lib
-
You are right there is something wrong. Actually I made a re build and I have this errors now:
**Severity Code Description Project File Line Suppression State
Error C3861 'open': identifier not found es-core C:\src\EmulationStation\es-core\src\platform.cpp 87
Error C3861 'close': identifier not found es-core C:\src\EmulationStation\es-core\src\platform.cpp 89
Error C2440 'initializing': cannot convert from 'const boost::filesystem::path::value_type ' to 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>' es-core C:\src\EmulationStation\es-core\src\Util.cpp 105
Error C2440 'initializing': cannot convert from 'const boost::filesystem::path::value_type ' to 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>' es-core C:\src\EmulationStation\es-core\src\Util.cpp 106
Error C1083 Cannot open include file: 'SDL2/SDL.h': No such file or directory emulationstation C:\src\EmulationStation\es-app\src\views\ViewController.cpp 15What could be the problem?
-
You are missing some dependencies, did cmake find all it needed? You are still only showing part of your output. Please use https://pastebin.com/ to show us all the output of a rebuild.
-
Here are the logs of the cmake of EmulationStation via the developer command prompt VS 2015 :
And here are the logs of the VS 2015 building EmulationStation:
-
@ray3d wait, what branch are you trying to build?
mytouch()
method in platform.cpp looks like:void touch(const std::string& filename) { #ifdef WIN32 FILE* fp = fopen(filename.c_str(), "ab+"); if (fp != NULL) fclose(fp); #else int fd = open(filename.c_str(), O_CREAT|O_WRONLY, 0644); if (fd >= 0) close(fd); #endif }
Looks like you are trying to build one of the older branches, that did not have the fixes to build on VS2015 yet.
-
I use this like the post say:
git clone https://github.com/fieldofcows/EmulationStation.git EmulationStation
Nothing else and my touch() in platform.cpp I have:
- void touch(const std::string& filename)
{
int fd = open(filename.c_str(), O_CREAT|O_WRONLY, 0644);
if (fd >= 0)
close(fd);
}
What I need to download then and from where?
- void touch(const std::string& filename)
-
@ray3d I see, you are cloning fieldofcows branch then.
Try this:
git clone https://github.com/RetroPie/EmulationStation.git EmulationStation
That will give you the current repository from the RetroPie branch, which you can consider the main trunk. -
@zigurana said in Step-by-step: How to build EmulationStation on Windows:
git clone https://github.com/RetroPie/EmulationStation.git EmulationStation
I arrived and tested and on the cmake I have this result now. In this case not finish the cmake:
-
@ray3d pugixml was converted to a submodule since this guide was written.
You will need to run
git submodule update --init
to pull down the the pugixml code.
Just curious, are you intending to work on the code or are you just looking to get an updated build for Windows?
-
jdrassa thank you for the information I want to use for my personal use and totally your command fix the issue of that library. However when I build in VS 2015 I have this log:
Less errors but it says there it can't generate the package or install. Now I went to configuration manager in VS 2015 in the solution and I checked the deploy on both because both were unchecked. But after check I have this log with worst quantity of errors:
What could be now?
-
@ray3d The line below is your current error. Either freetype didn't build properly or the path is configured wrong.
5>LINK : fatal error LNK1104: cannot open file 'c:\src\lib\freetype-2.7\objs\vc2010\Win32\freetype27.lib'
Do you intend to modify the code at all? If not, you can download a windows build here. These builds are automatically generated whenever the RetroPie repository is updated.
-
Yes I know there is a compiled version but I want to use to modify in future maybe and learn about the code.
I checked the directory of freetype I have this inside: freetype27d.lib with "d" I build exactly like post say is strange because there are no errors on building freetype on VS2015.
Any idea of what happens here? -
@ray3d A quick google search indicates that the 'd' indicates that the lib file is a debug build.
The instructions above indicate that you should be running a debug and release build for most of the dependencies.
@fieldofcows said in Step-by-step: How to build EmulationStation on Windows:
FreeType:
http://download.savannah.gnu.org/releases/freetype/freetype-2.7.tar.gz
Extract to c:\src\lib\freetype-2.7
Open C:\src\lib\freetype-2.7\builds\windows\vc2010\freetype.sln i VS
Allow VS to convert project to 2015
Build Debug | Win32
Build Release | Win32You should look them over again to make sure you didn't miss any additional steps.
-
Thank you jdrassa that was the problem thank you for the links now is working everything.
Zigurana thank you for the link also the first problem was the version and your link worked
Thank you for the help now is time to play :)
-
Praying for a visit from the trusted and true coders that have compiled on Windows.
I'm compiling the code, followed every step, Tried compiling the Original, RetrpPie, FieldOfCows and still the same error when it comes to the emulationstation build itself, es_core and the others build, which some had more errors which I fix but this one since I haven't worked with Boost much is puzzling me.
With linking boost, It tells me there is one or more Multiply defined symbols found. I removed Libs and gives me an error for libs, I removed the DLL's and it tells me to add DLL's back.
It's probably something really simple but maybe the lack of sleep is killing it?
My system specs
Windows 10 Pro x64
VS 2015 & VS 2017 (Ent Versions)
i7 8700K w/ 64gigs ramError copied:
Severity Code Description Project File Line Suppression State Error LNK2005 "public: class boost::filesystem::path & __thiscall boost::filesystem::path::operator/=(class boost::filesystem::path const &)" (??_0path@filesystem@boost@@QAEAAV012@ABV012@@Z) already defined in boost_filesystem-vc140-mt-1_61.lib(boost_filesystem-vc140-mt-1_61.dll) emulationstation C:\src\EmulationStation\es-app\libboost_filesystem-vc140-mt-1_61.lib(path.obj) 1 Error LNK2005 "public: static class std::codecvt<wchar_t,char,struct _Mbstatet> const & __cdecl boost::filesystem::path::codecvt(void)" (?codecvt@path@filesystem@boost@@SAABV?$codecvt@_WDU_Mbstatet@@@std@@XZ) already defined in boost_filesystem-vc140-mt-1_61.lib(boost_filesystem-vc140-mt-1_61.dll) emulationstation C:\src\EmulationStation\es-app\libboost_filesystem-vc140-mt-1_61.lib(path.obj) 1 Error LNK2005 "public: class boost::filesystem::path __thiscall boost::filesystem::path::extension(void)const " (?extension@path@filesystem@boost@@QBE?AV123@XZ) already defined in boost_filesystem-vc140-mt-1_61.lib(boost_filesystem-vc140-mt-1_61.dll) emulationstation C:\src\EmulationStation\es-app\libboost_filesystem-vc140-mt-1_61.lib(path.obj) 1 Error LNK2005 "public: class boost::filesystem::path __thiscall boost::filesystem::path::filename(void)const " (?filename@path@filesystem@boost@@QBE?AV123@XZ) already defined in boost_filesystem-vc140-mt-1_61.lib(boost_filesystem-vc140-mt-1_61.dll) emulationstation C:\src\EmulationStation\es-app\libboost_filesystem-vc140-mt-1_61.lib(path.obj) 1 Error LNK2005 "public: class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const __thiscall boost::filesystem::path::generic_string(void)const " (?generic_string@path@filesystem@boost@@QBE?BV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ) already defined in boost_filesystem-vc140-mt-1_61.lib(boost_filesystem-vc140-mt-1_61.dll) emulationstation C:\src\EmulationStation\es-app\libboost_filesystem-vc140-mt-1_61.lib(path.obj) 1 Error LNK2005 "public: static class std::locale __cdecl boost::filesystem::path::imbue(class std::locale const &)" (?imbue@path@filesystem@boost@@SA?AVlocale@std@@ABV45@@Z) already defined in boost_filesystem-vc140-mt-1_61.lib(boost_filesystem-vc140-mt-1_61.dll) emulationstation C:\src\EmulationStation\es-app\libboost_filesystem-vc140-mt-1_61.lib(path.obj) 1 Error LNK2005 "public: class boost::filesystem::path & __thiscall boost::filesystem::path::make_preferred(void)" (?make_preferred@path@filesystem@boost@@QAEAAV123@XZ) already defined in boost_filesystem-vc140-mt-1_61.lib(boost_filesystem-vc140-mt-1_61.dll) emulationstation C:\src\EmulationStation\es-app\libboost_filesystem-vc140-mt-1_61.lib(path.obj) 1 Error LNK2005 "public: class boost::filesystem::path __thiscall boost::filesystem::path::parent_path(void)const " (?parent_path@path@filesystem@boost@@QBE?AV123@XZ) already defined in boost_filesystem-vc140-mt-1_61.lib(boost_filesystem-vc140-mt-1_61.dll) emulationstation C:\src\EmulationStation\es-app\libboost_filesystem-vc140-mt-1_61.lib(path.obj) 1 Error LNK2005 "public: class boost::filesystem::path __thiscall boost::filesystem::path::stem(void)const " (?stem@path@filesystem@boost@@QBE?AV123@XZ) already defined in boost_filesystem-vc140-mt-1_61.lib(boost_filesystem-vc140-mt-1_61.dll) emulationstation C:\src\EmulationStation\es-app\libboost_filesystem-vc140-mt-1_61.lib(path.obj) 1 Error LNK1169 one or more multiply defined symbols found emulationstation C:\src\EmulationStation\Release\emulationstation.exe 1
Questions I see asked with my answers:
- Do I want to make changes: YES
- What Changes?
A. Easier translations to other languages, Not just 1 language for the entire build
B. Easier compiling to windows
C. Making APP config easier going forward. Allowing a possible master config that allows paths to be changed to other configs with possible encryption for custom builds people make for customers.
D. Graphical Changes for templates
E. Custom ES boot options to give it a face lift.
F. Work on a type of plugin option.
G. Create a unique FTP server built in to ES that uses ROM path as the default location so we can enable transfers to upload games with ease.
Thanks for your time guys and gals and I am hoping this isn't some crazy ordeal.
Brad
Contributions to the project are always appreciated, so if you would like to support us with a donation you can do so here.
Hosting provided by Mythic-Beasts. See the Hosting Information page for more information.