|   |   | 
| (98 intermediate revisions by 39 users not shown) | 
| Line 1: | Line 1: | 
|  | == How to Compile with Visual C++ 2005 Express ==
 |  | * [[Talk:Compiling under VS2005/20090316|Archive 2009/03/16]] | 
|  | 
 |  | 
 | 
|  | steps till being able to compile with V C++05 Express:
 |  | == Visual C++ Express 2005 Directories Setup == | 
|  | 
 |  | 
 | 
|  | required:
 |  | After installing the Microsoft Windows (Platform) SDK, when setting up the directories in Visual C++ Express 2005 do you need to add "Source Files"?? It has one entry: | 
|  | 
 |  | 
 | 
|  | *MS DirectX SDK
 |  | $(VCInstallDir)crt\src | 
|  | *MS Platform SDK
 |  | 
|  | 
 |  | 
 | 
|  | Tools - Options:Projects and Solutions - VC++ Directories
 |  | I found this directory in the Platform SDK: | 
|  | 
 |  | 
 | 
|  | upper right select "executable files" and enter "...\Microsoft Platform SDK\Bin" (replace ... with your path of course)
 |  | C:\Program Files\Microsoft Platform SDK\src\crt | 
|  | 
 |  | 
 | 
|  | "include files" --> "...\Microsoft Platform SDK\Include" and "...\Microsoft DirectX SDK (December 2005)\Include"
 |  | Just curious if it needs to be added. | 
|  | 
 |  | 
 | 
|  | "libary files" --> "...\Microsoft Platform SDK\Lib" & "...\Microsoft DirectX SDK (December 2005)\Lib\x86"
 |  | == == | 
|  |  | OK, looks like I Googled for nothing, so I'm going to warn you guys now, if your getting errors, look in this page, because I Googled for 2 hours, just to be lead back to the page I started on, but at least it all works now, I'm glad for that. In conclusion, make sure you aren't looking at the fix before you Google for it... | 
|  | 
 |  | 
 | 
|  |  | == PRJ0019 == | 
|  | 
 |  | 
 | 
|  |  | When I Build my Mod (Debug), I get this error: | 
|  | 
 |  | 
 | 
|  | ..\public\tier0\dbg.h
 |  | 
|  | 
 |  | 
 | 
|  | add
 |  | echo Project : error PRJ0019: A tool returned an error code from "Copying to c:\program files\steam\steamapps\SourceMods\hunternavan\bin\" | 
|  |  #pragma warning(disable :4996)
 |  | 
|  | after #pragma once (new line) todisable old, unsecure functions warning.
 |  | 
|  | 
 |  | 
 | 
|  |  | What do I do? --[[User:Adam.gamedev|Adam.gamedev]] 17:45, 12 July 2010 (UTC) | 
|  | 
 |  | 
 | 
|  | now the actual error fixes:
 |  | == gameinfo.txt == | 
|  | 
 |  | 
 | 
|  | ===All projects -undeclared identifier===
 |  | When I Debug my Mod, I get this error: | 
|  |  |   Setup file 'gameinfo.txt' doesn't exist in subdirectory 'hl2'. | 
|  |  |   Check your -game paremeter or VCONFIG setting. | 
|  | 
 |  | 
 | 
|  | Many, many instances of "error C2065: 'i' : undeclared identifier".
 |  | What do I do? --[[User:Adam.gamedev|Adam.gamedev]] 19:33, 12 July 2010 (UTC) | 
|  |   |  | 
|  | To fix this, right click the client / hl, select release / debug (you should dowith both, one after another),
 |  | 
|  |   |  | 
|  | Client->;Properties->C/C++->Language
 |  | 
|  |  Change Treat wchar_t as Built in Type to No
 |  | 
|  |   |  | 
|  | ===Release-Compile:===
 |  | 
|  |   |  | 
|  | '''client:'''
 |  | 
|  |   |  | 
|  | ..\public\vstdlib\strtools.h(90):
 |  | 
|  |  inline char*	Q_strrchr (const char *s, char c)					{ return strrchr( (char *)s, c ); }
 |  | 
|  |   |  | 
|  | ..\public\vstdlib\strtools.h(93) zu
 |  | 
|  |  inline char*	Q_strstr( const char *s1, const char *search )		{ return strstr( (char *)s1, search ); }
 |  | 
|  |   |  | 
|  | ..\cl_dll\hud_bitmapnumericdisplay.cpp(159)
 |  | 
|  |  if( bStart || digit > 0 || pos <= pow((float)10,numSigDigits-1) )
 |  | 
|  |   |  | 
|  | ..\game_shared\baseentity_shared.cpp(251)
 |  | 
|  |  char *s = strchr( (char *)szKeyName, '#' );
 |  | 
|  |   |  | 
|  | ..\tier1\KeyValues.cpp(800)
 |  | 
|  |  char *subStr = strchr((char *)keyName, '/');
 |  | 
|  |   |  | 
|  |   |  | 
|  | ''undeclared variable'' (add "int i;" in front of it, as mentioned before)
 |  | 
|  |   |  | 
|  | ..\cl_dll\interpolatedvar.h(538)
 |  | 
|  |   |  | 
|  | ..\public\sentence.cpp(735)
 |  | 
|  |   |  | 
|  | ..\public\sentence.cpp(1098)
 |  | 
|  |   |  | 
|  | ..\public\sentence.cpp(1168)
 |  | 
|  |   |  | 
|  |   |  | 
|  | ''Linking Errors & Fixes:''
 |  | 
|  |   |  | 
|  | Added msvcrt.lib and user32.lib to Linker->Input->Additional Dependencies (seperated each with a space(" "))
 |  | 
|  |   |  | 
|  | Added LIBC to Linker->Input->Ignore specific library
 |  | 
|  |   |  | 
|  | Added /FORCE:MULTIPLE to Linker->Command Line->Additional Options
 |  | 
|  |   |  | 
|  |   |  | 
|  | -----------
 |  | 
|  | '''hl:'''
 |  | 
|  |   |  | 
|  | vguiscreen.cpp(69)
 |  | 
|  |  char *s = strchr( (char *)szKeyName, '#' );
 |  | 
|  |   |  | 
|  | TemplateEntities.cpp(298)
 |  | 
|  |  int iMax = pow((double)10, (int)(strlen(ENTITYIO_FIXUP_STRING)-1)); // -1 for the &
 |  | 
|  |   |  | 
|  |   |  | 
|  | ''Linking Errors & Fixes:''
 |  | 
|  |   |  | 
|  | Added user32.lib to Additional Dependencies under Linker->Input
 |  | 
|  |   |  | 
|  | Added /FORCE:MULTIPLE to Linker->Command Line->Additional Options
 |  | 
|  |   |  | 
|  |   |  | 
|  | -------------------------
 |  | 
|  |   |  | 
|  | ===Debug-Compile:===
 |  | 
|  | '''client:'''
 |  | 
|  |   |  | 
|  | ...\public\tier0\memoverride.cpp line 405-430
 |  | 
|  |   |  | 
|  | Remove "_base" from those functions. Looks then like that:
 |  | 
|  |   |  | 
|  |  #if defined(_DEBUG) && _MSC_VER >= 1300
 |  | 
|  |  void __cdecl _aligned_free(
 |  | 
|  |  void *
 |  | 
|  |  );
 |  | 
|  |  void * __cdecl _aligned_malloc(
 |  | 
|  |  size_t,
 |  | 
|  |  size_t
 |  | 
|  |  );
 |  | 
|  |  void * __cdecl _aligned_malloc_base(
 |  | 
|  |  size_t size,
 |  | 
|  |  size_t align
 |  | 
|  |  )
 |  | 
|  |  {
 |  | 
|  |  return _aligned_malloc(size, align);
 |  | 
|  |  }
 |  | 
|  |  
 |  | 
|  |  void __cdecl _aligned_free_base(
 |  | 
|  |  void *memblock
 |  | 
|  |  )
 |  | 
|  |  {
 |  | 
|  |  _aligned_free(memblock);
 |  | 
|  |  }
 |  | 
|  |  #endif[/quote]
 |  | 
|  |   |  | 
|  |   |  | 
|  | ''Linking Errors & Fixes:''
 |  | 
|  |   |  | 
|  | Added msvcrtd.lib and user32.lib Linker->Input->Additional Dependencies
 |  | 
|  |   |  | 
|  | Added /FORCE:MULTIPLE to Linker->Command Line->Additional Options
 |  | 
|  |   |  | 
|  | --------
 |  | 
|  | '''hl:'''
 |  | 
|  |   |  | 
|  | ...\dlls\ai_behavior_follow.cpp(2090)
 |  | 
|  |  //ASSERT_INVARIANT( sizeof(FollowerListIter_t) == sizeof(AI_FollowManagerInfoHandle_t) );
 |  | 
|  |   |  | 
|  |   |  | 
|  | ''Linking Errors & Fixes:''
 |  | 
|  |   |  | 
|  | Added user32.lib to Linker->Input->Additional Dependencies
 |  | 
|  |   |  | 
|  | Added /FORCE:MULTIPLE to Linker->Command Line->Additional Options
 |  | 
|  |   |  | 
|  | ===Other Fixes===
 |  | 
|  |   |  | 
|  | I'm just trying out these... |  | 
|  |   |  | 
|  | For tolower() error:
 |  | 
|  |   |  | 
|  | baseentity.cpp(57)
 |  | 
|  |   |  | 
|  | add #include <ctype.h>
 |  | 
|  |   |  | 
|  | after #include "vphysics/friction.h" (L 57)
 |  | 
|  |   |  | 
|  |   |  | 
|  | Linker errors with wchar_t as values:
 |  | 
|  |   |  | 
|  |  Client->;Properties->C/C++->Language
 |  | 
|  |  and set Treat wchar_t as Built in Type to No.
 |  | 
|  |   |  | 
|  | This is because the Valve library vgui_control.lib is compiled with the option - Treat wchar_t as Built in Type - set to No so they need to be the same.
 |  | 
|  |   |  | 
|  | An alternative fix is to recompile vgui_control.lib with the option set to Yes - its found in src\vgui2\controls. So you need to back up vgui_control.lib - found in src\lib\public and recompile it with the option set to yes and then copy that to where the original one was that you backed up.
 |  | 
|  |   |  | 
|  |   |  | 
|  | For the error C2065: 'i' : undeclared identifier. There are two ways to fix this.
 |  | 
|  |   |  | 
|  | Easiest way is to go to Client->;Properties->C/C++->Language and set 
 |  | 
|  | 		Force Conformance in For Loop to No.
 |  | 
|  |   |  | 
|  | Alternative fix would be adding the "int"-declaration into code. That's how i did it before and how it's described above.
 |  | 
|  |   |  | 
|  |   |  | 
|  | The problem with strdup doesn't happen in debug mode since Valve overrides strdup with their own strdup func.
 |  | 
|  | 	The heap error only shows itself when using the debugger in release mode.
 |  | 
|  | 	I believe it's because strdup() in the C library that comes with 2005 express uses new() instead of malloc().
 |  | 
|  | 	So when Valve frees the memory using free() it gives the error. Here's the fix I hope...
 |  | 
|  |   |  | 
|  | ..\tier1\stringpool.cpp(73)
 |  | 
|  |   |  | 
|  | CHANGE
 |  | 
|  |   |  | 
|  |  	pszNew = strdup( pszValue );
 |  | 
|  | TO
 |  | 
|  |  	#ifndef _debug
 |  | 
|  |  		pszNew = (char*) malloc(sizeof(char) * (strlen(pszValue) + 1)); // Use Valve's malloc instead of strdup
 |  | 
|  |  		strcpy(pszNew, pszValue);
 |  | 
|  |  	#else
 |  | 
|  |  		pszNew = strdup( pszValue ); // Use Valve's debug strdup
 |  | 
|  |  	#endif
 |  | 
|  |   |  | 
|  |   |  | 
|  | ..\cl_dll\c_baseflex.cpp(921)
 |  | 
|  |   |  | 
|  | CHANGE
 |  | 
|  |   |  | 
|  |  	g_flexcontroller[g_numflexcontrollers++] = strdup( szName );
 |  | 
|  |   |  | 
|  | TO
 |  | 
|  |   |  | 
|  |  		#ifndef _debug
 |  | 
|  |  			g_flexcontroller[g_numflexcontrollers] = (char*) malloc(sizeof(char) * (strlen(szName) + 1)); //Use V's malloc instead of strdup
 |  | 
|  |  			strcpy(g_flexcontroller[g_numflexcontrollers++], szName);
 |  | 
|  |  		#else
 |  | 
|  |  			g_flexcontroller[g_numflexcontrollers++] = strdup( szName ); //Use V's debug strdup
 |  | 
|  |  		#endif
 |  | 
|  |   |  | 
|  |   |  | 
|  | BotPutInServer linker failures
 |  | 
|  |   |  | 
|  | Various BotPutInServer lines will fail to link in DEBUG mode.
 |  | 
|  | 	Commenting the BotPutInServer lines out works just fine.
 |  | 
|  | 	It may have some negative affect on bots.
 |  | 
|  | 	I quite frankly have not looked into that stuff at all, other than to see that it breaks the build.
 |  | 
|  |   |  | 
|  | Fix:
 |  | 
|  |   |  | 
|  | A better way would be
 |  | 
|  |  	adding hl2mp_bot_temp.h and hl2mp_bot_temp.cpp 
 |  | 
|  |  	to the HL project under the Source Files->HL2MP folder.
 |  | 
|  |  	hl2mp_bot_temp.h and hl2mp_bot_temp.cpp can both be found in yourmod/src/dlls/hl2mp_dll folder. 
 |  | 
|  |   |  | 
|  |   |  | 
|  |   |  | 
|  | ===Other Fixes / Comments===
 |  | 
|  |   |  | 
|  | got some info from [http://www.chatbear.com/board.plm?a=viewthread&t=104,1102070328,6443&b=4991&id=949052&v=flatold&s=0 this forumthreat]
 |  | 
|  |   |  | 
|  | i had some errors in c_rope
 |  | 
|  |   |  | 
|  | fixed it once with:
 |  | 
|  |   |  | 
|  | taking the closing "}" from ''( int iRenderCache = 0; iRenderCache < nRenderCacheCount; ++iRenderCache )''
 |  | 
|  |   |  | 
|  | behind ''++m_aRenderCache[iRenderCache].m_nCacheCount;''
 |  | 
|  |   |  | 
|  | (means from line 231 (i think) to line 252)
 |  | 
|  |   |  | 
|  | i'm still trying to complete this so it will compile, hope i could help anyone...
 |  | 
|  |   |  | 
|  | greetz
 |  | 
|  |   |  | 
|  | [[User:Rotzi]] Jan 2006
 |  | 
|  |   |  | 
|  |   |  | 
|  | grml...
 |  | 
|  |   |  | 
|  | doesn't work neither with express nor with full version... maybe i'm just stupid...
 |  | 
|  |   |  | 
|  | I'll try again this weekend and update here...
 |  | 
|  |   |  | 
|  | [[User:Rotzi]] Feb 2006
 |  | 
|  |   |  | 
|  |   |  | 
|  | And still I'm having problems... Just tried it again, Release Client only, but did not get past 3 kinds of errors, wich all in all were 190 errors and 439 warnings...
 |  | 
|  |   |  | 
|  | I also noticed that including user32.lib and excluding LIBC did not change these error-numbers, so atleast up to that point, it did not need them... Still I'm only talking about client-Release Only.
 |  | 
|  |   |  | 
|  | [[User:Rotzi]] |  | 
|  |   |  | 
|  | ----
 |  | 
|  |   |  | 
|  | == Misc ==
 |  | 
|  | I'll be getting a copy of Visual Studio 2005 (not express) in the next couple of weeks.Is there a problem compiling on it too or does anybody know yet? --[[User:AndrewNeo|AndrewNeo]] 07:11, 28 Jan 2006 (PST)
 |  | 
|  |   |  | 
|  | No, what i read is there are no Problems with normal, full Version of VS 05.--[[User:Rotzi|Rotzi]]4 Fe 2006 (GMT+1)
 |  | 
|  |   |  | 
|  |   |  | 
|  | ''' Force:Multiple error in release - client '''
 |  | 
|  |   |  | 
|  | How come i get the error like described in the threat, but it won't be fixed by adding "/FORCE:MULTIPLE", but caused by that instead... caused means, without it it doesn't get to that error,or doesn't have it...
 |  | 
|  |   |  | 
|  | msvcrt.lib(MSVCR80.dll) : error LNK2005: _free already defined in memoverride.obj ''(thats the error)''
 |  | 
|  |   |  | 
|  | Added /FORCE:MULTIPLE to Linker->Command Line->Additional Options ''(and that should be the solution)''
 |  | 
Visual C++ Express 2005 Directories Setup
After installing the Microsoft Windows (Platform) SDK, when setting up the directories in Visual C++ Express 2005 do you need to add "Source Files"?? It has one entry:
$(VCInstallDir)crt\src
I found this directory in the Platform SDK:
C:\Program Files\Microsoft Platform SDK\src\crt
Just curious if it needs to be added.
OK, looks like I Googled for nothing, so I'm going to warn you guys now, if your getting errors, look in this page, because I Googled for 2 hours, just to be lead back to the page I started on, but at least it all works now, I'm glad for that. In conclusion, make sure you aren't looking at the fix before you Google for it...
PRJ0019
When I Build my Mod (Debug), I get this error:
echo Project : error PRJ0019: A tool returned an error code from "Copying to c:\program files\steam\steamapps\SourceMods\hunternavan\bin\"
What do I do? --Adam.gamedev 17:45, 12 July 2010 (UTC)
gameinfo.txt
When I Debug my Mod, I get this error:
 Setup file 'gameinfo.txt' doesn't exist in subdirectory 'hl2'.
 Check your -game paremeter or VCONFIG setting.
What do I do? --Adam.gamedev 19:33, 12 July 2010 (UTC)