Register forum user name Search FAQ

Gammon Forum

Notice: Any messages purporting to come from this site telling you that your password has expired, or that you need to verify your details, confirm your email, resolve issues, making threats, or asking for money, are spam. We do not email users with any such messages. If you have lost your password you can obtain a new one by using the password reset link.

Due to spam on this forum, all posts now need moderator approval.

 Entire forum ➜ MUSHclient ➜ General ➜ Notes about compiling MUSHclient source under MVC++ .NET 2005

Notes about compiling MUSHclient source under MVC++ .NET 2005

It is now over 60 days since the last post. This thread is closed.     Refresh page


Posted by Zeno   USA  (2,871 posts)  Bio
Date Tue 03 Apr 2007 08:43 PM (UTC)

Amended on Tue 03 Apr 2007 08:52 PM (UTC) by Zeno

Message
Getting a few more errors here compared to 2003. I think most of these seem easy enough to fix. I think all of the errors in 2003 apply to this.


New errors: (let me know if any fixes can be improved)


No idea if this is due to my options, or what. Just a warning though:
cl : Command line warning D9035 : option 'Fr' has been deprecated and will be removed in a future release
cl : Command line warning D9036 : use 'FR' instead of 'Fr'


Probably just needs to make it a bool:
error C4430: missing type specifier - int assumed. Note: C++ does not support default-int	s:\mc\mushclient\doc.h	2381


Not sure about this. Maybe it's the function return type:
error C4430: missing type specifier - int assumed. Note: C++ does not support default-int	s:\mc\mushclient\debugworldinputdlg.h	28-30


Make it an int:
error C2065: 'i' : undeclared identifier	s:\mc\mushclient\doc.cpp	4193


Make it a long:
error C2065: 'i' : undeclared identifier	s:\mc\mushclient\evaluate.cpp	925


Not sure if this is the same problem, but the last fix was already applied:
error C2440: 'static_cast' : cannot convert from 'UINT (__thiscall CStaticLink::* )(CPoint)' to 'LRESULT (__thiscall CWnd::* )(CPoint)'	\mushclient\statlink.cpp	27


Make it a bool:
error C4430: missing type specifier - int assumed. Note: C++ does not support default-int	\mushclient\statlink.cpp	125


Make it an int:
error C2065: 'j' : undeclared identifier	\mushclient\utilities.cpp	1001


No idea:
Error	90	error C4430: missing type specifier - int assumed. Note: C++ does not support default-int	\mushclient\globalprefs.cpp	38

Error	91	error C4430: missing type specifier - int assumed. Note: C++ does not support default-int	\mushclient\globalprefs.cpp	686

Error	94	error C4430: missing type specifier - int assumed. Note: C++ does not support default-int	\mushclient\prefspropertypages.cpp	84


Make it an int:
Error	104	error C2065: 'i' : undeclared identifier	\mushclient\prefspropertypages.cpp	7693


Unsure:
Error	120	error C4430: missing type specifier - int assumed. Note: C++ does not support default-int	mushclient\debugworldinputdlg.cpp	142

Error	121	error C4430: missing type specifier - int assumed. Note: C++ does not support default-int	\mushclient\debugworldinputdlg.cpp	147

Error	122	error C4430: missing type specifier - int assumed. Note: C++ does not support default-int	\mushclient\debugworldinputdlg.cpp	152


All ints:
Error	123	error C2065: 'i' : undeclared identifier	\mushclient\highlightphrasedlg.cpp	158

Error	127	error C2065: 'i' : undeclared identifier	\mushclient\testrslt.cpp	103

Error	136	error C2065: 'i' : undeclared identifier	\mushclient\triggdlg.cpp	555

Error	138	error C2065: 'i' : undeclared identifier	\mushclient\mditabs.cpp	173

Error	140	error C2065: 'i' : undeclared identifier	\mushclient\mushview.cpp	1452


No idea:
Error	139	error C2065: 'wnd' : undeclared identifier	\mushclient\mditabs.cpp	327

Error	142	error C2065: 'stylepos' : undeclared identifier	\mushclient\mushview.cpp	3150

Error	150	error C2440: '=' : cannot convert from 'const char *' to 'char *'	\mushclient\textview.cpp	1700


Gonna try and fix most of these before I post more errors.

Zeno McDohl,
Owner of Bleached InuYasha Galaxy
http://www.biyg.org
Top

Posted by Nick Gammon   Australia  (23,133 posts)  Bio   Forum Administrator
Date Reply #1 on Tue 03 Apr 2007 09:39 PM (UTC)

Amended on Tue 03 Apr 2007 09:49 PM (UTC) by Nick Gammon

Message
Quote:

C++ does not support default-int s:\mc\mushclient\doc.h 2381


Yep, funny that slipped through:


CString GetArgument (const CArgumentList & ArgumentList, 
                     CString strName, 
                     const int iPosition, 
                     const bool bLowerCase = false);


Plus, change the actual function in mxputils.cpp.

Quote:

Maybe it's the function return type:

C++ does not support default-int s:\mc\mushclient\debugworldinputdlg.h 28-30


Yes, agreed:


  void AddAnsiSpecial (const char * sName, const int iCode);
  void AddMXPSpecial (const char * sName, const int iCode);
  void AddOtherSpecial (const char * sName, const int iCode);


Plus, change the functions themselves in DebugWorldInputDlg.cpp.


Quote:

'i' : undeclared identifier s:\mc\mushclient\doc.cpp 4193


It is declared further up - in my version the "int i" would persist, they must have changed that:


 void CMUSHclientDoc::RemoveChunk (void)
   {

// remove JUMP_SIZE lines

  for (int i = 0; i < JUMP_SIZE; i++)
    {
    delete m_LineList.GetHead ();   // delete contents of head iten
    m_LineList.RemoveHead ();
    }

// shuffle positions backwards

  for (i = 0; i < (m_maxlines / JUMP_SIZE); i++)
    m_pLinePositions [i] = m_pLinePositions [i + 1];


So it would need to read, to be compatible with earlier versions:


 void CMUSHclientDoc::RemoveChunk (void)
   {
   int i;

// remove JUMP_SIZE lines

  for (i = 0; i < JUMP_SIZE; i++)
    {
    delete m_LineList.GetHead ();   // delete contents of head iten
    m_LineList.RemoveHead ();
    }

// shuffle positions backwards

  for (i = 0; i < (m_maxlines / JUMP_SIZE); i++)
    m_pLinePositions [i] = m_pLinePositions [i + 1];

- Nick Gammon

www.gammon.com.au, www.mushclient.com
Top

Posted by Nick Gammon   Australia  (23,133 posts)  Bio   Forum Administrator
Date Reply #2 on Tue 03 Apr 2007 09:48 PM (UTC)
Message
Quote:

'i' : undeclared identifier s:\mc\mushclient\evaluate.cpp 925


The same thing happened as before, I would move the "long i" out of the "for" loop and hope it persists outside the loop. Not sure if it does. It wouldn't in Lua:


    long i;
    for (i = 1; i < MAX_WILDCARDS; i++)
      {
      COleVariant v (alias_item->wildcards [i].c_str ());
      sa.PutElement (&i, &v);
      }
    // i should be MAX_WILDCARDS (10) now ;)
    COleVariant v (alias_item->wildcards [0].c_str ()); // the whole matching line
    sa.PutElement (&i, &v);


Quote:

cannot convert from 'UINT (__thiscall CStaticLink::* )(CPoint)' to
'LRESULT (__thiscall CWnd::* )(CPoint)'
\mushclient\statlink.cpp 27


In statlink.h, change the prototype to:


afx_msg LRESULT	OnNcHitTest(CPoint point);


In statlink.cpp, change the function to:


LRESULT CStaticLink::OnNcHitTest(CPoint point)
{
	return HTCLIENT;
}



- Nick Gammon

www.gammon.com.au, www.mushclient.com
Top

Posted by Nick Gammon   Australia  (23,133 posts)  Bio   Forum Administrator
Date Reply #3 on Tue 03 Apr 2007 09:51 PM (UTC)

Amended on Tue 03 Apr 2007 09:52 PM (UTC) by Nick Gammon

Message
Quote:

'j' : undeclared identifier \mushclient\utilities.cpp 1001


Take the "int j" out of the for loop, eg.


      int j;
      for (j = 0; VirtualKeys [j].iVirtualKey; j++)
        {
        if (strPart.CompareNoCase (VirtualKeys [j].sKeyName) == 0)
          {
          if (key != 0)
            ThrowErrorException ("You cannot specify two keystrokes");

          key = VirtualKeys [j].iVirtualKey;
          break;
          }
        } // end of finding key name

      if (VirtualKeys [j].iVirtualKey == 0)
        ThrowErrorException ("Keystoke %s unknown", (LPCTSTR) strPart);



The important thing is to not only add a declaration, but to remove the one inside the for loop, otherwise it will not behave.

- Nick Gammon

www.gammon.com.au, www.mushclient.com
Top

Posted by Nick Gammon   Australia  (23,133 posts)  Bio   Forum Administrator
Date Reply #4 on Tue 03 Apr 2007 10:10 PM (UTC)
Message
Quote:

missing type specifier - int assumed.
Note: C++does not support default-int \mushclient\globalprefs.cpp 38


Change the prototype and function to read:


int __stdcall BrowseCallbackProc(


Ditto for \mushclient\prefspropertypages.cpp 84

Quote:

error C2065: 'i' : undeclared identifier \mushclient\prefspropertypages.cpp 7693


Again, move the "int i" out of the loop (before the earlier 'for').


Quote:

mushclient\debugworldinputdlg.cpp 142 / 147 / 152


Put "void" in front of the function names as suggested before for the prototype.

Quote:

All ints:

Error 123 error C2065: 'i' : undeclared identifier \mushclient\highlightphrasedlg.cpp 158

... etc.


Again, I haven't looked at all of these but I would move the declaration from the original for loop, so it is outside all for loops.

Quote:

error C2065: 'wnd' : undeclared identifier \mushclient\mditabs.cpp 327


Move the "HWND wnd" declaration out of the for loop.

Quote:

error C2065: 'stylepos' : undeclared identifier \mushclient\mushview.cpp 3150


Ditto for "POSITION stylepos".

Quote:

cannot convert from 'const char *' to 'char *' \mushclient\textview.cpp 1700


Change to:


    const char * end;


- Nick Gammon

www.gammon.com.au, www.mushclient.com
Top

Posted by Nick Gammon   Australia  (23,133 posts)  Bio   Forum Administrator
Date Reply #5 on Tue 03 Apr 2007 10:15 PM (UTC)
Message
In case anyone is reading this and thinks this shows that MUSHclient is "riddled with bugs", all these messages are basically compiler warnings about syntactical aspects that have been tightened up over the last few years. None will affect program operation as such.

- Nick Gammon

www.gammon.com.au, www.mushclient.com
Top

Posted by David Haley   USA  (3,881 posts)  Bio
Date Reply #6 on Wed 04 Apr 2007 12:34 AM (UTC)
Message
The for loop variables were actually a bug in Microsoft's implementation of the standard, if I remember correctly. The loop variable declared in the initializer part is supposed to be local to the for loop, as in Lua. The earlier versions did not respect that, and so the variable persisted.

This is something that happens with gcc, too, incidentally; a lot of programs that compiled with gcc 3.3 simply will not compile with gcc 4 or "worse yet" 4.1.

But, the compilers are just doing their job, enforcing proper usage of the language. The fact that the bug fixes require oftentimes significant changes to existing programs is kind of irritating sometimes... :-)

David Haley aka Ksilyan
Head Programmer,
Legends of the Darkstone

http://david.the-haleys.org
Top

Posted by Zeno   USA  (2,871 posts)  Bio
Date Reply #7 on Thu 05 Apr 2007 07:48 PM (UTC)

Amended on Thu 05 Apr 2007 08:38 PM (UTC) by Zeno

Message
Here are the rest. They're all easy to fix, but I'll post them here in case other people run into the problem as well.
Error	78	error C4430: missing type specifier - int assumed. Note: C++ does not support default-int	\mushclient\statlink.cpp	125
Error	117	error C2065: 'j' : undeclared identifier	mushclient\utilities.cpp	2369
Error	122	error C4430: missing type specifier - int assumed. Note: C++ does not support default-int	mushclient\globalprefs.cpp	686
Error	140	error C2065: 'i' : undeclared identifier	mushclient\prefspropertypages.cpp	7795
Error	153	error C2065: 'i' : undeclared identifier	mushclient\testrslt.cpp	103
Error	162	error C2065: 'i' : undeclared identifier	mushclient\triggdlg.cpp	555
Error	164	error C2065: 'i' : undeclared identifier	mushclient\mditabs.cpp	173
Error	165	error C2065: 'i' : undeclared identifier	mushclient\mushview.cpp	1452
Error	176	error C2065: 'i' : undeclared identifier	mushclient\xml_load_world.cpp	1731
Error	177	error C2664: 'WideCharToMultiByte' : cannot convert parameter 3 from 'unsigned short *' to 'LPCWSTR'	mushclient\xml_serialize.cpp	113
Error	179	error C2664: 'WideCharToMultiByte' : cannot convert parameter 3 from 'unsigned short *' to 'LPCWSTR'	mushclient\xmlparse.cpp	197
Error	180	error C2664: 'WideCharToMultiByte' : cannot convert parameter 3 from 'unsigned short *' to 'LPCWSTR'	mushclient\xmlparse.cpp	202
Error	188	error C2593: 'operator +=' is ambiguous	mushclient\methods.cpp	2590
Error	189	error C2065: 'pos' : undeclared identifier	mushclient\methods.cpp	3119
Error	197	error C2065: 'p' : undeclared identifier	mushclient\methods.cpp	7382
Error	200	error C2065: 'iCount' : undeclared identifier	mushclient\methods.cpp	8293


I'll let you know if there are any I'm not sure how to fix.

I'm also getting this:
Error	27	error BK1506 : cannot open file '.\WinDebug\pcre.sbr': No such file or directory	BSCMAKE

[EDIT] Fixed the pcre.sbr problem by turning on Browse Info (/FR).

Linker error:
Error	3	error LNK2019: unresolved external symbol "bool const __cdecl optboolean(struct lua_State *,int,bool)" (?optboolean@@YA?B_NPAUlua_State@@H_N@Z) referenced in function "int __cdecl filepicker(struct lua_State *)" (?filepicker@@YAHPAUlua_State@@@Z)	lua_utils.obj

Has to do with this line:
int bSave = optboolean(L, 5, 0);

But I would think it would know which fn to use because of overloading.

Zeno McDohl,
Owner of Bleached InuYasha Galaxy
http://www.biyg.org
Top

Posted by Nick Gammon   Australia  (23,133 posts)  Bio   Forum Administrator
Date Reply #8 on Fri 06 Apr 2007 08:03 AM (UTC)
Message
I don't know if it can convert 0 to false.

Better change the 0 to false then it should compile.

- Nick Gammon

www.gammon.com.au, www.mushclient.com
Top

Posted by Nick Gammon   Australia  (23,133 posts)  Bio   Forum Administrator
Date Reply #9 on Sat 07 Apr 2007 04:29 AM (UTC)
Message
In the end I changed the prototype and function to:


const bool optboolean (lua_State *L, const int narg, const int def);


Also I found one place where it was called with "true", so I changed it to 1.

- Nick Gammon

www.gammon.com.au, www.mushclient.com
Top

Posted by Zeno   USA  (2,871 posts)  Bio
Date Reply #10 on Tue 10 Apr 2007 08:28 PM (UTC)

Amended on Tue 10 Apr 2007 08:31 PM (UTC) by Zeno

Message
I tested the latest source release, there's a few more needed to compile error-free in 2005.

Error	176	error C2065: 'i' : undeclared identifier	mushclient\xml_load_world.cpp	2057

Error	197	error C2065: 'iCount' : undeclared identifier	mushclient\methods.cpp	8424

Error	212	error BK1506 : cannot open file '.\windebug\pcre.sbr': No such file or directory	BSCMAKE


Of course the fixes are obvious, and as far as the last one I'm not so sure about that one. It can probably be ignored, I'm guessing it's a setting with my 2005 version.

Hm, I'm still getting the linker error as well:
Error	148	error LNK2019: unresolved external symbol "bool const __cdecl optboolean(struct lua_State *,int,int)" (?optboolean@@YA?B_NPAUlua_State@@HH@Z) referenced in function "int __cdecl filepicker(struct lua_State *)" (?filepicker@@YAHPAUlua_State@@@Z)	lua_utils.obj

Zeno McDohl,
Owner of Bleached InuYasha Galaxy
http://www.biyg.org
Top

Posted by Nick Gammon   Australia  (23,133 posts)  Bio   Forum Administrator
Date Reply #11 on Tue 10 Apr 2007 09:43 PM (UTC)
Message
Maybe change, in filepicker in lua_utils.cpp:


bool bSave = optboolean (L, 5, 0);


Return type was int before.

- Nick Gammon

www.gammon.com.au, www.mushclient.com
Top

Posted by Ked   Russia  (524 posts)  Bio
Date Reply #12 on Sun 10 Jun 2007 05:24 PM (UTC)
Message
The linker error still persists in version 4.08. Seems that the problem is that lua_methods.cpp defines optboolean as static, while it is declared in lua_helpers.h without the "static" keyword. I solved the problem for myself by removing the keyword from the definition in lua_methods.
Top

Posted by Nick Gammon   Australia  (23,133 posts)  Bio   Forum Administrator
Date Reply #13 on Sun 10 Jun 2007 10:33 PM (UTC)
Message
OK, changed as you suggested.

- Nick Gammon

www.gammon.com.au, www.mushclient.com
Top

The dates and times for posts above are shown in Universal Co-ordinated Time (UTC).

To show them in your local time you can join the forum, and then set the 'time correction' field in your profile to the number of hours difference between your location and UTC time.


34,467 views.

It is now over 60 days since the last post. This thread is closed.     Refresh page

Go to topic:           Search the forum


[Go to top] top

Information and images on this site are licensed under the Creative Commons Attribution 3.0 Australia License unless stated otherwise.