How To Build VGMTrans?

It is not so much difficult, but there are several points need to care.

This document targets VGMTrans_src_and_bin_9_29_09. Situation might be different when you try any other versions.

Requirements

  • Visual Studio 2008
    • Express Edition is okay, but it will require some additional installations. If you can use higher edition (Professional Edition, for instance), you should definitely use it.
    • Visual Studio 2010 can work fine, but you will need to rebuild static library of TinyXML*1, or you will encounter LNK2019 error (details). Precompiled VS2010 Dependencies
  • Windows SDK (should be included in Visual Studio, I used v7.1)
  • DirectX SDK (August 2007)
    • The above is the final version that contains DirectMusic.
  • WTL (7.5 and 8.0 worked)
  • TinyXML (2.5.3 is included in VGMTrans source code package, but the latest version 2.6.2 works just fine too)

At least you need to download and install DirectX SDK and WTL. Both of those libraries can be installed by running setup executable, and adding include/library paths to Visual Studio. Visual Studio 2010 does not have "VC++ Directories" category, so that you need to configure it in VGMTrans.vcxproj(.user), or edit Microsoft.Cpp.Win32.user.props to have those paths, just like the following.

<?xml version="1.0" encoding="utf-8"?> 
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 <PropertyGroup>
  <ExecutablePath>$(ExecutablePath)</ExecutablePath>
  <IncludePath>$(IncludePath);C:\WTL80\include;C:\Program Files\Microsoft DirectX SDK (August 2007)\Include</IncludePath>
  <ReferencePath>$(ReferencePath)</ReferencePath>
  <LibraryPath>$(LibraryPath);C:\Program Files\Microsoft DirectX SDK (August 2007)\Lib\x86</LibraryPath>
  <SourcePath>$(SourcePath)</SourcePath>
  <ExcludePath>$(ExcludePath)</ExcludePath>
 </PropertyGroup>
</Project>

Note that you must not add those paths before Windows SDK path, or you will see an error C2061: syntax error : identifier '__RPC__out_xcount_part'

Additional Requirements for Visual Studio 2008 Express Edition

Unfortunately, Express Edition requires more installation because it lacks ATL support. Though I have never tried to use Express Edition, some anonymous developers tried the following things and solved the problem. Nice find.

*1:TinyXML 2.5.3 is included in VGMTrans source code package, but the latest version 2.6.2 works just fine too. I recommend a newer version.