Frictional Games Forum (read-only)
Problems compiling in Windows - Printable Version

+- Frictional Games Forum (read-only) (https://www.frictionalgames.com/forum)
+-- Forum: Open Source Collaboration (https://www.frictionalgames.com/forum/forum-27.html)
+--- Forum: Overture (https://www.frictionalgames.com/forum/forum-29.html)
+--- Thread: Problems compiling in Windows (/thread-3588.html)



Problems compiling in Windows - JKO - 07-22-2010

Hi, I purchased the game from the Indie Bundle and loved it (except the beginning of Overture, but I just never liked caves) When I learned that the source was open, I got awesomely happy and tried to make it run (I'm a computer science student you see), but unfortunately, I'm getting a lot of problems, and would like your help!

First off, I downloaded everything and installed them properly (The 3 Git folders and dependencies, the various missing libs like GLaux and OpenAL, etc.)
Then, (After hours of trying to figure out how to,) I got the OALWrapper and the HPL1engine to compile, and got both their .lib's. But when I try to compile Penumbra, it runs without error, but the .exe crash before doing anything:

Code:
Problem Event Name:    APPCRASH
  Application Name:    Penumbra.exe
  Application Version:    0.0.0.0
  Application Timestamp:    4c477c59
  Fault Module Name:    Penumbra.exe
  Fault Module Version:    0.0.0.0
  Fault Module Timestamp:    4c477c59
  Exception Code:    c0000005
  Exception Offset:    00003ea5
  OS Version:    6.1.7600.2.0.0.256.1
  Locale ID:    2057
  Additional Information 1:    0a9e
  Additional Information 2:    0a9e372d3b4ad19135b953a78882e789
  Additional Information 3:    0a9e
  Additional Information 4:    0a9e372d3b4ad19135b953a78882e789

If it can be of any use, my executable is not the same size as the official one. Mine is 2,886Kb and the vanilla one is 2,664Kb.

Here are a few snapshot I deemed of value (note the Linker error, is that a problem here?):

http://img251.imageshack.us/img251/3610/penumbraerror.png


This is the log it gives me when I compile Penumbra:

Code:
Build started 22/07/2010 01:24:29.
     1>Project "C:\Programation\OuvertureSource\PenumbraOverture\Penumbra.vcxproj" on node 2 (ClCompile target(s)).
     1>ClCompile:
         C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\CL.exe /c /I..\HPL1Engine\include /I..\dependencies\include /I..\OALWrapper\include /Zi /nologo /W3 /WX- /O2 /Oy- /D WIN32 /D NDEBUG /D _WINDOWS /D _MBCS /Gm- /EHsc /MD /GS /fp:precise /Zc:wchar_t /Zc:forScope /Fo"build/Release\\" /Fd"build/Release\vc100.pdb" /Gd /TP /analyze- /errorReport:prompt Credits.cpp
         Credits.cpp
     1>c:\programation\ouverturesource\hpl1engine\include\system/SystemTypes.h(169): warning C4996: 'sprintf': This function or variable may be unsafe. Consider using sprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
                 C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\stdio.h(371) : see declaration of 'sprintf'
     1>Done Building Project "C:\Programation\OuvertureSource\PenumbraOverture\Penumbra.vcxproj" (ClCompile target(s)).

Build succeeded.

Time Elapsed 00:00:12.41

The log of OALWrapper:

Code:
1>------ Build started: Project: OALWrapper, Configuration: Release Win32 ------
1>Build started 22/07/2010 02:20:26.
1>InitializeBuildStatus:
1>  Creating "Release\OALWrapper.unsuccessfulbuild" because "AlwaysCreate" was specified.
1>ClCompile:
1>  OAL_AudioData.cpp
1>  OAL_Buffer.cpp
1>  OAL_Device.cpp
1>  OAL_EFX.cpp
1>  OAL_EFXManager.cpp
1>  OAL_Effect.cpp
1>  OAL_EffectSlot.cpp
1>  OAL_Effect_Reverb.cpp
1>  OAL_Filter.cpp
1>  OAL_Helper.cpp
1>sources\OAL_Helper.cpp(53): warning C4996: 'wcstombs': This function or variable may be unsafe. Consider using wcstombs_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1>          C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\stdlib.h(533) : see declaration of 'wcstombs'
1>sources\OAL_Helper.cpp(55): warning C4996: 'wcstombs': This function or variable may be unsafe. Consider using wcstombs_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1>          C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\stdlib.h(533) : see declaration of 'wcstombs'
1>sources\OAL_Helper.cpp(62): warning C4996: 'mbstowcs': This function or variable may be unsafe. Consider using mbstowcs_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1>          C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\stdlib.h(498) : see declaration of 'mbstowcs'
1>sources\OAL_Helper.cpp(64): warning C4996: 'mbstowcs': This function or variable may be unsafe. Consider using mbstowcs_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1>          C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\stdlib.h(498) : see declaration of 'mbstowcs'
1>sources\OAL_Helper.cpp(81): warning C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1>          C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\stdio.h(234) : see declaration of 'fopen'
1>sources\OAL_Helper.cpp(88): warning C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1>          C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\stdio.h(234) : see declaration of 'fopen'
1>  OAL_Init.cpp
1>sources\OAL_Init.cpp(251): warning C4996: 'vsprintf': This function or variable may be unsafe. Consider using vsprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1>          C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\stdio.h(371) : see declaration of 'vsprintf'
1>  OAL_Loaders.cpp
1>  OAL_LoggerObject.cpp
1>sources\OAL_LoggerObject.cpp(54): warning C4996: 'vsprintf': This function or variable may be unsafe. Consider using vsprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1>          C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\stdio.h(371) : see declaration of 'vsprintf'
1>sources\OAL_LoggerObject.cpp(124): warning C4996: 'getenv': This function or variable may be unsafe. Consider using _dupenv_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1>          C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\stdlib.h(433) : see declaration of 'getenv'
1>  OAL_OggSample.cpp
1>  OAL_OggStream.cpp
1>  OAL_Playback.cpp
1>  OAL_Sample.cpp
1>  OAL_Source.cpp
1>sources\OAL_Source.cpp(660): warning C4244: 'argument' : conversion from 'double' to 'float', possible loss of data
1>  OAL_SourceManager.cpp
1>  OAL_Stream.cpp
1>  Compiling...
1>  OAL_WAVSample.cpp
1>sources\OAL_WAVSample.cpp(56): warning C4996: 'alutLoadWAVFile': was declared deprecated
1>          C:\Programation\OuvertureSource\dependencies\include\AL/alut.h(113) : see declaration of 'alutLoadWAVFile'
1>sources\OAL_WAVSample.cpp(73): warning C4996: 'alutUnloadWAV': was declared deprecated
1>          C:\Programation\OuvertureSource\dependencies\include\AL/alut.h(116) : see declaration of 'alutUnloadWAV'
1>sources\OAL_WAVSample.cpp(87): warning C4996: 'alutUnloadWAV': was declared deprecated
1>          C:\Programation\OuvertureSource\dependencies\include\AL/alut.h(116) : see declaration of 'alutUnloadWAV'
1>Lib:
1>  OALWrapper.vcxproj -> C:\Programation\OuvertureSource\OALWrapper\Release\OALWrapper.lib
1>FinalizeBuildStatus:
1>  Deleting file "Release\OALWrapper.unsuccessfulbuild".
1>  Touching "Release\OALWrapper.lastbuildstate".
1>
1>Build succeeded.
1>
1>Time Elapsed 00:00:12.52
========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========

And finally, the HPLengine log:

Code:
1>------ Build started: Project: HPL, Configuration: Release Win32 ------
1>Build started 22/07/2010 02:29:45.
1>InitializeBuildStatus:
1>  Touching "build\Release\HPL.unsuccessfulbuild".
1>ClCompile:
1>  LowLevelSoundOpenAL.cpp
1>C:\Programation\OuvertureSource\HPL1Engine\include\system/SystemTypes.h(169): warning C4996: 'sprintf': This function or variable may be unsafe. Consider using sprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1>          C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\stdio.h(371) : see declaration of 'sprintf'
1>  OpenALSoundChannel.cpp
1>C:\Programation\OuvertureSource\HPL1Engine\include\system/SystemTypes.h(169): warning C4996: 'sprintf': This function or variable may be unsafe. Consider using sprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1>          C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\stdio.h(371) : see declaration of 'sprintf'
1>  OpenALSoundData.cpp
1>C:\Programation\OuvertureSource\HPL1Engine\include\system/SystemTypes.h(169): warning C4996: 'sprintf': This function or variable may be unsafe. Consider using sprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1>          C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\stdio.h(371) : see declaration of 'sprintf'
1>  Generating Code...
1>  All outputs are up-to-date.
1>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppBuild.targets(1151,5): warning MSB8012: TargetPath(C:\Programation\OuvertureSource\HPL1Engine\build\Release\HPL.lib) does not match the Library's OutputFile property value (C:\Programation\OuvertureSource\HPL1Engine\lib\HPL.lib). This may cause your project to build incorrectly. To correct this, please make sure that $(OutDir), $(TargetName) and $(TargetExt) property values match the value specified in %(Lib.OutputFile).
1>Spring.obj : warning LNK4221: This object file does not define any previously undefined public symbols, so it will not be used by any link operation that consumes this library
1>Container.obj : warning LNK4221: This object file does not define any previously undefined public symbols, so it will not be used by any link operation that consumes this library
1>  HPL.vcxproj -> C:\Programation\OuvertureSource\HPL1Engine\build\Release\HPL.lib
1>FinalizeBuildStatus:
1>  Deleting file "build\Release\HPL.unsuccessfulbuild".
1>  Touching "build\Release\HPL.lastbuildstate".
1>
1>Build succeeded.
1>
1>Time Elapsed 00:00:14.64
========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========

I did a LOT of research, but the docs are not really there yet, so it's pretty hard to do my usual debugging (I don't usually need to ask questions). I've packaged my HPL.lib and OALWrapper.lib (along with the penumbra.exe it give me, just in case), which can be downloaded here. It would be nice if you could try them and tell me whether they are the problem or not. I'm using Visual Studio 2010 under Windows 7.

It would be nice to end the Windows/VS10 problems once and for all, I've noticed most topics don't really solve the problem clearly, so I've included as much info as possible in hope to pin down the problem.

If you need any other info, please tell me.

Also, I've been thinking about making the project files from scratch and link the stuff myself, is that an advisable idea?

(Sorry for mistakes I may have made, I'm not english)

(If I can get it to work I PROMISE I'll make a comprehensive VS10 guide! Smile)


RE: Problems compiling in Windows - Urkle - 07-22-2010

Couple of things to check out.. Did the Penumbra.exe generate an hpl log (I believe in the My Documents/Penumbra folder)
Also did you RUN the executable from within the "redist" data folder?
Have you tried building a Debug build instead of a Release build and putting a breakpoint on hplMain (in Main.cpp) and walking through the code there to see where it blows up?


RE: Problems compiling in Windows - JKO - 07-22-2010

Quote:My penumbra.exe did not generate an hpl.log, but the vanilla one did straight away. I do run penumbra from the redist folder (and the project is linked to it). I tried running penumbra in debug with the breakpoint at hplmain, as you asked, here is the debug error it gives me:

http://img690.imageshack.us/img690/8123/penumbradebug.png

The codes that causes the problem, are in OALWrapper.
This is the code of the 2nd line in the debug stack:
Code:
bool                    iOAL_LoggerObject::mbLogEnabled = false;
eOAL_LogOutput            iOAL_LoggerObject::mLogOutput = eOAL_LogOutput_File;
eOAL_LogVerbose    iOAL_LoggerObject::mLogVerboseLevel = eOAL_LogVerbose_Low;
wstring                    iOAL_LoggerObject::msLogFile = BuildLogFilename("OAL.log");  <----(This line)

And this is the code where the crash happens:
Code:
#if defined(WIN32)

        WCHAR sPath[MAX_PATH];
        if(SUCCEEDED(SHGetFolderPath(NULL,
            CSIDL_PERSONAL | CSIDL_FLAG_CREATE,
            NULL,0,sPath)))
        {
            wsTemp = wstring(sPath).append(L"/").append(wsName);
        }
        else
        {
            return L"";
        }
    #else
        string home = string(getenv("HOME"));   <----(This line)
        wsTemp = String2WString(home);
        wsTemp.append(L"/").append(wsName);
    #endif

This is what I have so far.
EDIT:
I fixed it. The errors it gave me reminded me of the "It just crashes" topic, and I was able to fix if from there. Thanks a lot for the debug tip. Now I'll check what is the easiest way to get it all working and post a little guide, as promised.