Search code examples
visual-studio-2013live555

Building 64bit Live555 with Visual Studio 2013


I am trying to build the components of Live555 with Visual Studio 2013 64bit on Windows 7.

I have tried editing win32config and the *.mak files without success. I've been searching the internet for a few hours and trying all kinds of things with command prompts.

For some reason VS2013 x64 command prompt is still building 32bit static libs and I can't figure out why.

If anyone has any good ideas, that would be fantastic!


Solution

  • The win32config file that you get from the .tar.gz file requires substantial editing to make it compatible with recent SDK and MSVC++ releases. This is a version that produced a clean build:

    NODEBUG=1
    TARGETOS = WINNT
    
    UI_OPTS =       $(guilflags) $(guilibsdll)
    CONSOLE_UI_OPTS =   $(conlflags) $(conlibsdll)
    CPU=amd64
    
    COMPILE_OPTS =      $(INCLUDES) $(cdebug) $(cflags) $(cvarsdll) -I. /EHsc /O2 /MD /GS /D "WIN64" /Oy- /Oi /D "NDEBUG"
    C =         c
    C_COMPILER =        cl
    C_FLAGS =       $(COMPILE_OPTS)
    CPP =           cpp
    CPLUSPLUS_COMPILER =    $(C_COMPILER)
    CPLUSPLUS_FLAGS =   $(COMPILE_OPTS)
    OBJ =           obj
    LINK =              link -out:
    LIBRARY_LINK =      lib -out:
    LINK_OPTS_0 =       $(linkdebug) ws2_32.lib /NXCOMPAT
    LIBRARY_LINK_OPTS = 
    LINK_OPTS =     $(LINK_OPTS_0) $(UI_OPTS)
    CONSOLE_LINK_OPTS = $(LINK_OPTS_0) $(CONSOLE_UI_OPTS)
    SERVICE_LINK_OPTS =     kernel32.lib advapi32.lib shell32.lib ws2_32.lib -subsystem:console,$(APPVER)
    LIB_SUFFIX =        lib
    LIBS_FOR_CONSOLE_APPLICATION =
    LIBS_FOR_GUI_APPLICATION =
    MULTIMEDIA_LIBS =   winmm.lib
    EXE =           .exe
    PLATFORM = Windows
    
    rc32 = rc.exe
    .rc.res:
        $(rc32) $<
    

    After you've edited this file, run the genWindowsMakefiles command from bash (or the CMD file). Next, start the x64 Visual Studio Command Prompt. Make sure you got the x64 native configuration flavor of it. Issue the following commands:

    cd c:\projects\live\liveMedia
    nmake -f liveMedia.mak
    cd ..\groupsock
    nmake -f groupsock.mak
    cd ..\UsageEnvironment
    nmake -f UsageEnvironment.mak
    cd ..\BasicUsageEnvironment
    nmake -f BasicUsageEnvironment.mak
    cd ..\testProgs
    nmake -f testProgs.mak
    cd ..\mediaServer
    nmake -f mediaServer.mak
    

    Alter the first command to match the directory where you put the source. TODO items: cleaning doesn't work, it tries to use the *nix rf command. Simplest workaround is del *.obj to force the compiler to rebuild the object files the .exe files are built without a manifest. Shouldn't matter for the test programs, I assume you're only interested in the .lib files it builds the release version of the libraries and executables, you'll have to tweak the COMPILE_OPTS to get a debug build.

    In order to compile 64 bit native code with Visual Studio 2013, you require professional edition.

    Open the VS2013 x64 Native Tools Command Prompt Then make sure you set C_COMPILER to "$(TOOLS32)\bin\amd64\cl" after correcting TOOLS32 to the VC/bin dir.