wiki:CompileWithWxWidgets

Building the BOINC client for Windows

NOTE: Since the new style of building BOINC changes the additional dependencies to files already on the drive, it is not guaranteed that this old style of building BOINC will still work. If you did not update your old code past [17852], or are building BOINC 5.10 and below, use these steps to build your BOINC client.

Building the client with Visual Studio 2005 and Visual Studio 2005 Express Edition.

Software Prerequisites:

  • Download the C++ 2005 Express Edition ISO file (part of Visual Studio 8 Express).
    • You will need some program to burn the ISO file to CD or DVD, e.g. Nero Essentials.
    • After you burnt it to disk, reinsert the CD or DVD in the CD/DVD writer and Autostart will take care of the installation start. Follow that through.
Build Target Build Platform wxWidget Version Environment Variable
Release Win32 2.8.x WXWIN
Release x64 2.8.x WXWINX64
Debug Win32 2.8.x WXWIN
Debug x64 2.8.x WXWINX64
  • In Windows, Start->(Settings)->Control Panel->System, select Advanced; click Environment Variables. Under 'User variables' click New. Create a variable named 'wxwin' with value 'c:\wx' (or wherever you installed it). Then restart Visual Studio.
Example Environment Variables:
WXWIN=C:\Src\SDKs\wx28
WXWINX64=C:\Src\SDKs\wx28x64
  • Build wxWidgets. See Compiling wxWidgets for details. You'll need to compile both the Debug and Release targets.
  • When done, go File->Close Solution.
  • Then go File->Open Solution-><BOINCSRCDIR/>\win_build\boinc.sln and press Open.
  • Set up Visual Studio to use the correct platform. From the drop-down menu choose either Win32 (for 32 bit platforms) or x64 (for 64 bit platforms) and choose to make it a Release/Debug? version.
Additional linker dependencies for Visual C++ Express (right click the project name, properties, Linker, Input, double click the
... box on Additonal Dependencies and add those missing).
  • boinc_dll
    • advapi32.lib
    • user32.lib
    • kernel32.lib
  • boinc
    • advapi32.lib
    • gdi32.lib
    • user32.lib
    • kernel32.lib
  • boincmgr
    • ole32.lib
    • oleaut32.lib
  • Go to the Build menu, Build Solution.

All files will be built to <BOINCSRCDIR/>\win_build\Build\Win32\Release (or Build\x64\Release for 64 bit versions). Versions compiled with Visual C++ 2005 Express use the optimizing compiler. Benchmarks are the same as on versions released by Berkeley. The above steps will always build a development version, if you want to change this, edit <BOINCSCRDIR/>\version.h

Building the client with Visual Studio 2008 and Visual Studio 2008 Express Edition.

Software Prerequisites:

To be backward compatible with VS 2005 versions and be able to build BOINC for older than Windows XP versions, you will need to download and install:

All the service packs for Visual Studio Express Edition cannot be downloaded through Windows Update.

Build Target Build Platform wxWidget Version Environment Variable
Release Win32 2.8.x WXWIN
Release x64 2.8.x WXWINX64
Debug Win32 2.8.x WXWIN
Debug x64 2.8.x WXWINX64
  • In Windows, Start->(Settings)->Control Panel->System, select Advanced; click Environment Variables. Under 'User variables' click New. Create a variable named 'wxwin' with value 'c:\wx' (or wherever you installed it). Then restart Visual Studio.
Example Environment Variables:
WXWIN=C:\Src\SDKs\wx28
WXWINPRODX64=C:\Src\SDKs\wx26x64
  • Build wxWidgets. See Compiling wxWidgets for details. You'll need to compile both the Debug and Release targets.
  • When done, go File->Close Solution.
  • Then go File->Open Solution-><BOINCSRCDIR/>\win_build\boinc.sln and press Open.
  • Set up Visual Studio to use the correct platform. From the drop-down menu choose either Win32 (for 32 bit platforms) or x64 (for 64 bit platforms) and choose to make it a Release/Debug? version.
  • For Visual C++ 2008 Express Edition it is necessary to include preprocessor macros to direct the compiler to build for the correct Windows version (this was apparently introduced for Windows Vista). E.g. in Project -> <project_name> Properties, I needed to add these entries to Configuration Properties -> C/C++ -> Preprocessor -> Preprocessor Definitions: _WIN32_WINNT=0x0501 and NTDDI_VERSION=0x05010200 -- see sdkddkver.h in the SDK include directory for macro values.
  • Additional linker (Linker -> Input) dependencies for Visual C++ Express
    • boinc_dll
      • advapi32.lib
      • user32.lib
      • kernel32.lib
    • boinc
      • advapi32.lib
      • gdi32.lib
      • user32.lib
      • kernel32.lib
    • boincmgr
      • ole32.lib
      • oleaut32.lib
  • Go to the Build menu, Build Solution.

All files will be built to <BOINCSRCDIR/>\win_build\Build\Win32\Release (or Build\x64\Release for 64 bit versions). Versions compiled with Visual C++ 2008 Express use the optimizing compiler. Benchmarks are the same as on versions released by Berkeley. The above steps will always build a development version, if you want to change this, edit <BOINCSCRDIR/>\version.h

You can easily ignore all of the warnings that you get when building. Most of them are for the eyes of the developers.

Building library files for use with BOINC built on VS 2008

Next we're building the library files so they work with your compiled client. For this, we need to download the source code for OpenSSL, Zlib and libCurl (direct links to latest stable versions. If a link doesn't work, go to its homepage and choose a mirror).

Unzip the files to easy to reach directories. In the next examples I'll use c:\openssl\, c:\zlib\ and c:\curl\ as the directories of choice. Especially for the OpenSSL directory, make sure you have no spaces anywhere in the path, use hyphens or underscores if need be or else the command line build will break. For the write up I am assuming to use the 32bit option only. If you want to use the 64bit option, make sure you substitute Win32 with Win64 wherever mentioned.

zlib

In Visual C++ go File->Open->Project/Solution?, navigate to c:\zlib\projects\visualc6\ and choose zlib.dsw If it asks to save to the sln file or to convert the present files, answer yes to everything.

In the class view list choose zlib, then click Build->Project configuration. Set Active solution configuration to DLL Release. Make sure at least zlib is selected. Make sure the Platform is set to Win32. Click Close.

Click Project->Properties. Make sure that the Configuration shows DLL Release or (Active)DLL Release. Click OK

Click Build->Clean solution.

Next click Build->Batch build. Click the Project column so all zlib options are at the top, select only the DLL Release|Win32 option in the Build column. Check that the rest of the Build options are not selected. click Build.

When done click File->Close solution. File->Exit to exit the program.

The output files will be in the c:\zlib\projects\visualc6\Win32_DLL_Release\ directory, you will need the zlib1.dll file.

Curl

In Visual C++ go File->Open->Project/Solution?, navigate to c:\curl\ and choose vc6curl.dsw If it asks to convert the present files, answer yes to everything.

In the class view list choose libcurl, then click Build->Project configuration. Set Active solution configuration to using libcurl DLL Release. Make sure libcurl is selected in the Build column. click close.

Click Project->Properties. Make sure that the Configuration shows Release or (Active)Release. Make sure the Platform is set to Win32. Click Apply, click OK

Click Build->Clean solution.

Next click Build->Batch build. Click the Projects column header so all libcurl options are at the top. Select only the libcurl with DLL Release|Win32 in the Build column. Check that the rest of the Build options are not selected. Click Build.

When done click File->Close solution. File->Exit to exit the program.

The output files will be in the c:\curl\lib\DLL-Release\ directory, you will need the libcurl.dll file.

OpenSSL

Lots of command line prompt work here. First off, read c:\openssl\INSTALL.W32 (for Windows 32bit) or \INSTALL.W64 (for Windows 64bit). It'll be explained in there as well how to do this, but in a more rudimentary form.

You will need to get Perl to build OpenSSL. Any Perl will do, but if not sure, then use ActivePerl. It'll install by default to your C:\ drive (C:\Perl)

You now need the Visual C++ command prompt, so start up Visual C++ 2008 (Express Edition). Go Tools->Visual Studio 2008 Command Prompt.

If the line before the blinking cursor shows another drive than c:, we'll have to go to c: first:

  • Type c: in the command line window and press Enter.

Else continue from here.

  • Type cd\openssl and press Enter.
  • Type perl Configure VC-WIN32 --prefix=c:/openssl/ and press Enter. (make sure to use the forward slashes '/', not the backslashes '\' in this path, as the next script is using Unix paths, not Windows paths.)
  • Type ms\do_masm and press Enter.
  • Type nmake -f ms\ntdll.mak and press Enter.

Although the perl Configure script and the do_masm batchfile will work from a normal command line window, the nmake script will not! Hence why you best run all from the VC++ command line window.

The output files will be in the c:\openssl\out32dll\ directory, you will need the libeay32.dll and ssleay32.dll files.

Last modified 7 years ago Last modified on 05/29/10 16:32:53