Go Back   EQEmulator Home > EQEmulator Forums > Archives > Archive::Support > Archive::Tutorials/Howto's > Tutorials--Outdated Use the Wiki > Tutorials::Discussion

Tutorials::Discussion Discuss Tutorials here. Do NOT POST tutorials here, they belong on the wiki.

Reply
 
Thread Tools Display Modes
  #1  
Old 08-22-2004, 06:44 AM
Cisyouc
Demi-God
 
Join Date: Jun 2004
Location: Heaven.
Posts: 1,260
Default Slightly Outdated :: HOWTO: Compile EQEMu on VC++6

In this guide I will show you how to compile EQEMu Source using Visual C++ 6 and the latest source rar/zip. I will not be covering how to operate wincvs as it is covered in other posts.

You will need:
  • Basic Knowledge of Windows
  • An Internet Connection
  • Microsoft Visual C++ 6
  • Patience
Downloading the Source and Components
You must download the following:
Now do the following:
  • Extract the SOURCE into: C:\EQEMu\Source\
  • Extract MySQL into : C:\EQEMu\MySQL\
  • Extract zLIB into : C:\EQEMu\zlib\
  • Extract MySQL Includes to : C:\EQEMu\MySQL\
  • (Optional) Extract Perl Into : C:\EQEMu\perl
------------------------------
Now, open up Microsoft Visual C++ 6, and make sure you are NOT using a '.NET' version by going to Help > About Visual C++...

If you see a screen that looks like:

You DO have Visual C++ 6 and you can move on. However, if you see:

You may NOT have Visual C++ 6. Indicators you do not have VC++6 are:
-Mentioning of the .NET Framework (Blue)
-.NET Logo (Green, see below)
-Year 2003, 2004 or 2005 Mentioned. (Red)

.NET Logo looks like this:

However, the Visual Studio logo (the one you want) looks like this:

------------------------------------------------------
Configuring the Project
Go to Start>Run and type in "C:\EQEMu\Source\EMuShareMem\EMuShareMem.dsw"


Immediatly, Visual Studio should open with the EMuShareMem.dll project.

Go to Tools > Options...
Click the Directories Tab, and under Include Files, add:

C:\EQEMu\MySQL\include

Now go to Build > Build EMuShareMem.dll

When it is sucessful, you will see this:

Next, go to File > Close Workspace, and then File > Open Workspace. Select 'World.dsw' inside of C:\EQEMu\Source\World\ and click Open.

Before building this time, go to Tools > Options...

Next, click the Directories Tab and add these directories in under "Include Files":

C:\EQEMu\mysql\include
C:\EQEMu\zlib
C:\EQEMu\zlib\include

Now under "Show Directories For:" Change the dropdown menu to "Library Files".

Now add to here,

C:\EQEMu\MySQL\lib\opt

Now click OK and go to Build > Build World.exe!

--------------------------------------------------------
Building Zone.exe (no Perl)
Go to Start > Run
Type in "C:\EQEMu\Source\zone\zone.dsw"
Click OK

Go to Tools > Options...

Verify that the following directories are listed under "Include Files" in the Directories Tab:

C:\EQEMu\mysql\include
C:\EQEMu\zlib
C:\EQEMu\zlib\include

If they are not, add them!

Now Click "Include Files" And Drop Down to "Library Files" and verify that the following is in there:

C:\EQEMu\MySQL\lib\opt

If it is not, add it!

Now, you may go to Build > Build Zone.exe
------------------------------------------------
Building Zone.exe WITH Perl

First, download and install ActivePerl (ActivePerl Downloads) to C:\EQEMu\perl

Now install IO::Scalar using a snip from Lurker_005's Guide to the Perl Quest System.
Quote:
Installing Perl

Download Perl 5.8, Then install using the default settings for everything. Now reboot so path changes take affect. Congratulations, Perl is installed.

Installing IO::Scalar
If you don't already have it, download nmake.exe (save with .exe extension). Copy it into your perl\bin directory. Then type the following in a DOS window:

Code:
perl -MCPAN -e shell
When asked if you want to configure it manually, say "no". Once everything is done there type in:

Code:
install IO::Scalar
Once complete it should say -- install OK.

Problems
If perl isn't installed properly the zone windows will disapear after starting up. If you followed all the above steps correctly, make sure you have a copy of "Perl58.dll" in your "C:\Perl\bin" directory. If there is a copy there, search your computer for all other copies of it and delete them. Also note it is Perl58, not 56.

To test if IO::Scalars is installed type the following in a DOS window:

Code:
perl -MIO::Scalar -e "print 'Installed'"
If you get an error it isn't working. Make sure you installed it correctly, if you didn't delete the following files in "C:\Perl\site\lib\IO" and then rerun "install IO::Scalar":
Scalar.pm
Scalar.pm.html
ScalarArray.pm


Last Edited by Monrezz on 16th February 2004.
Next,

Go to Start > Run
Type in "C:\EQEMu\Source\zone\zone.dsw"
Click OK

Now, click OKAY and go to Build > Configurations.

Click on Add... and make:

Configuration: Perl
Copy Settings From: Zone - Win32 Release
Platform: Win32

Click OK, and then Close.

Next, go to Build > Set Active Configuration

Select Zone - Win32 Perl

Click OK.

Go to Tools > Options...

Verify that the following directories are listed under "Include Files" in the Directories Tab:

C:\EQEMu\mysql\include
C:\EQEMu\zlib
C:\EQEMu\zlib\include

If they are not, add them!

Now Click "Include Files" And Drop Down to "Library Files" and verify that the following is in there:

C:\EQEMu\MySQL\lib\opt

If it is not, add it!

Now, go to Project > Settings...

Click the C/C++ Tab and Verify the Category is GENERAL.

Under Preprocessor Definitions, ADD (Do NOT replace), the following:

,EMBPERL,EMBPERL_PLUGIN

Now switch the Category to Preprocessor and add to the "Additional Include Directories",

c:\eqemu\perl\lib\core

Next, Click the Link tab and Change the Category to Input

Under "Additional Library Path", Add:

c:\eqemu\perl\lib\core

Now click okay, and go to Project > Add to Project > Files...

In "File Name" Type:
emb*.* and hit enter.

Select all files that still are showing and click OPEN.

Now go to Build > Build Zone.exe!


--------------------------------------------------------------
Tested under 2 Computers, Windows XP Home, Microsoft Visual C++ 6.0 (199 on both.

If you feel I missed something or was unclear about something post here, but, again, I won't be supporting this thread as I don't want to be flooded with newbie tells =D.
__________________
namespace retval { template <class T> class ReturnValueGen { private: T x; public: ReturnValueGen() { x = 0; }; T& Generator() { return x; }; }; } int main() { retval::ReturnValueGen<int> retvalue; return retvalue.Generator(); }
C++ is wonderful.
Reply With Quote
  #2  
Old 04-20-2005, 05:30 AM
Cutter
Sarnak
 
Join Date: Sep 2004
Posts: 85
Default Sorry to bump an old post

Is this tutorial still correct Cis? and if it isnt can or do you mind updating it please and how to get to the "main" branch of the cvs of the source i believe that would be 6.0 DR2 not sure though..

i dont know the status of DR3 myself... its been awhile and lots has changed so im trying to keep up but do new stuff

Thanks in advance
Reply With Quote
  #3  
Old 05-31-2005, 07:16 PM
arigo
Fire Beetle
 
Join Date: May 2005
Posts: 20
Red face

Why are my compiled executes like 3x larger than the precompiled version you can download on sourceforge? I disabled debug and everything, It's annoying. My compiled version also uses more bandwidth per client.
Reply With Quote
  #4  
Old 06-02-2005, 05:23 AM
Cisyouc
Demi-God
 
Join Date: Jun 2004
Location: Heaven.
Posts: 1,260
Default

Quote:
Originally Posted by arigo
Why are my compiled executes like 3x larger than the precompiled version you can download on sourceforge? I disabled debug and everything, It's annoying. My compiled version also uses more bandwidth per client.
It sounds like when you're compiling your including alot more features into your compiles than what comes in the precompiles, assuming that debug really is shut off..I'd check that again...
__________________
namespace retval { template <class T> class ReturnValueGen { private: T x; public: ReturnValueGen() { x = 0; }; T& Generator() { return x; }; }; } int main() { retval::ReturnValueGen<int> retvalue; return retvalue.Generator(); }
C++ is wonderful.
Reply With Quote
  #5  
Old 06-02-2005, 06:24 AM
arigo
Fire Beetle
 
Join Date: May 2005
Posts: 20
Default

Quote:
Originally Posted by Cisyouc
It sounds like when you're compiling your including alot more features into your compiles than what comes in the precompiles, assuming that debug really is shut off..I'd check that again...
I am using release as active cofiguration. As far as checking into making sure debug is shut off, where do I do this? I went into the project settings and set debug info to none.
Reply With Quote
  #6  
Old 06-02-2005, 06:55 AM
Cisyouc
Demi-God
 
Join Date: Jun 2004
Location: Heaven.
Posts: 1,260
Default

The first thing to check is to see, under preprocessor definitions (see tutorial for where that is), that EQDEBUG=0.
__________________
namespace retval { template <class T> class ReturnValueGen { private: T x; public: ReturnValueGen() { x = 0; }; T& Generator() { return x; }; }; } int main() { retval::ReturnValueGen<int> retvalue; return retvalue.Generator(); }
C++ is wonderful.
Reply With Quote
  #7  
Old 06-02-2005, 07:01 AM
arigo
Fire Beetle
 
Join Date: May 2005
Posts: 20
Default

Quote:
Originally Posted by Cisyouc
The first thing to check is to see, under preprocessor definitions (see tutorial for where that is), that EQDEBUG=0.
Well, that wasn't in my preprocessor definitions. However, "NDEBUG" /D was. I added EQDEBUG=0 and went to compile, and my execute came out same size.

Edit: actually "NDEBUG" /D was was a part of common options. My bad. Still, EQDEBUG=0 isn't effective.

Last edited by arigo; 06-02-2005 at 03:04 PM..
Reply With Quote
  #8  
Old 06-02-2005, 02:41 PM
Cisyouc
Demi-God
 
Join Date: Jun 2004
Location: Heaven.
Posts: 1,260
Default

Quote:
Originally Posted by arigo
Well, that wasn't in my preprocessor definitions. However, "NDEBUG" /D was. I added EQDEBUG=0 and went to compile, and my execute came out same size.

Edit: actually "NDEBUG" /D was was a part of common options. My bad. Still, EQDEBUG=0 isn't effective.
Still, the most likely suspect is the fact that you probably have more things defined than the precompiles, or the precompiles are of an earlier version.
__________________
namespace retval { template <class T> class ReturnValueGen { private: T x; public: ReturnValueGen() { x = 0; }; T& Generator() { return x; }; }; } int main() { retval::ReturnValueGen<int> retvalue; return retvalue.Generator(); }
C++ is wonderful.
Reply With Quote
Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

   

All times are GMT -4. The time now is 05:40 PM.


 

Everquest is a registered trademark of Daybreak Game Company LLC.
EQEmulator is not associated or affiliated in any way with Daybreak Game Company LLC.
Except where otherwise noted, this site is licensed under a Creative Commons License.
       
Powered by vBulletin®, Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Template by Bluepearl Design and vBulletin Templates - Ver3.3