Showing posts with label compiler. Show all posts
Showing posts with label compiler. Show all posts

Thursday, December 07, 2006

C++: Visual C++ 2005 Express Edition x64

Visual C++ 2005 Express Edition is a free 32 bit IDE and compiler offered by microsoft. It has limitations (no resource editor, no MFC) but you can build command line apps with it ok, and if you set it up properly you can build apps for x64. This is helpful particularly if you have an x64 system, and don't want to pay for Visual Studio 2005 which has support for x64 compilation. To enable x64 install the free Microsoft Platform SDK. Then depending on what you're programming you may want the .NET Framework SDK 2.0 (x64).

download links


After installing these, you need to configure Visual C++ Express to compile with the Platform SDK libraries.
go to Tools > Options > Projects and Solutions > VC++ Directories and set the following:
Executable files: C:\Program Files\MS_Platform_SDK\Bin
Include files: C:\Program Files\MS_Platform_SDK\Include
Library files: C:\Program Files\MS_Platform_SDK\Lib
Note: depending on where you installed the platform sdk you may have to use "Microsoft Platform SDK for Windows Server 2003 R2" as "MS_Platform_SDK" above.


Now, open up the x64 open build debug/retail environment window (came with Platform SDK). It will look like a command-line interface. From that command-line go to the folder where "VCExpress.exe" is located and call it. Now when you build apps it will build with the x64 libraries.

Then, you need to modify some default settings in your projects.

To compile for x64, create 'x64' in the configuration manager for x64 (copy settings from win32), then verify and set the following project settings:
* /MACHINE (Specify Target Platform) is set to /MACHINE:AMD64.
* Register Output is turned OFF.
* If Debug Information Format was set to /ZI in the Win32 project configuration, then it is set to /Zi in the 64-bit project configuration. For more information, see /Z7, /Zi, /ZI (Debug Information Format).
* Values of WIN32 are replaced by WIN64 for /D (Preprocessor Definitions).


When linking, if you get errors like:
"error LNK2001: unresolved external symbol _RTC_Shutdown"
then set "Basic Runtime Checks" to Default in the project settings.

When linking, if you get errors like:
fatal error LNK1112: module machine type 'AMD64' conflicts with target machine type 'x64', you need to make sure you use /MACHINE:AMD64 and not /MACHINE:x64. If it won't let you, change to "Not Set", then add it explicitly under Additional Linker Options.

When running your app you may get an error saying msvcrtd.dll not found. Go to your platform SDK folder, and go to noredist/win64/amd64 and you will find it there, copy it into your system32 folder. Don't use the one in noredist/win64/ like i did at first, it doesn't help.

sources:
http://msdn2.microsoft.com/en-us/library/9yb4317s(VS.80).aspx
http://www.planetamd64.com/lofiversion/index.php/t18796.html
http://www.planetamd64.com/lofiversion/index.php/t5934.html

Thursday, November 30, 2006

C++: Visual C++ 2005 Express Edition

Visual C++ 2005 Express Edition is a free IDE and compiler offered by microsoft. It has limitations (no resource editor, no MFC) but you can build command line apps with it ok. They strip out a lot of stuff but you can install the free Microsoft Platform SDK to enable more features for Visual C++ 2005 Express. Then depending on what you're programming you may want the .NET Framework SDK 2.0 (x86).

download links


After installing these, you need to make the Visual C++ Express able to see the Platform SDK libraries.
go to Tools > Options > Projects and Solutions > VC++ Directories and set the following:
Executable files: C:\Program Files\MS_Platform_SDK\Bin
Include files: C:\Program Files\MS_Platform_SDK\Include
Library files: C:\Program Files\MS_Platform_SDK\Lib
Note: depending on where you installed the platform sdk you may have to use "Microsoft Platform SDK for Windows Server 2003 R2" as "MS_Platform_SDK" above.

Then, you need to modify some default settings in your projects. Edit the corewin_express.vsprops file in
C:\Program Files\Microsoft Visual Studio 8\VC\VCProjectDefaults and add the following to AdditionalDependencies: " user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib"

You can enable a windowed template in the Visual Studio Express:
Edit the file AppSettings.htm in
C:\Program Files\Microsoft Visual Studio 8\
in subfolder \VC\VCWizards\AppWiz\Generic\Application\html\1033\ and comment out the following 4 lines (approx line 440)
// WIN_APP.disabled = true;
// WIN_APP_LABEL.disabled = true;
// DLL_APP.disabled = true;
// DLL_APP_LABEL.disabled = true;


Then when go to build an application choose a Win32 Console Application. In the Win32 Application Wizard dialog box, make sure that Windows application is selected as the Application type and the ATL is not selected. (before you edited the AppSettings.htm file, this was disabled. Click the Finish button to generate the project.

This post is pretty much a regurgitation of the following link. So for more information go check it out. I originally had this post for x64 and x86 but decided to split. This one was the x86 so go check out my other x64 post.

source: http://msdn.microsoft.com/vstudio/express/visualc/usingpsdk/