Uleat
04-28-2012, 03:06 AM
I understand the mindset of coders..I've known quite a few..so please take this as a suggestion and not a critism about the code... (the Emu works great and I think these game design corps should take a cue from you guys!)
Scenario 1:
I run both VC9 & 10 on a single 32-bit cpu (no HT) winXP system. I have used perl 5.10.1.1008 and am currently using 5.12.4.1205. I have compiled on both versions of VC and haven't experienced a difference or noticed anything out of the ordinary using VC10 and perl 5.12.
Suggestion 1:
Convert code to "Perl512" reference and mark Server.sln(9) as defunct. VC10 Express is free and can still be registered (with a MSDN enrollment.)
Scenario 2: (speculative)
The "ifndef" for the MSCV checks for VC10 (1600) - the first occurrence in EQWParser.cpp. It then defines GVCV_Set if it finds >=1600. I'm not sure if this definition is VC10 or perl 5.14 related, so I'm assuming it's perl 5.14 since it's defaulted to for VC10. The next "ifdef" sets pragma (lib, "Perl5xx") based on the version found. Not knowing if the MSCV version is relevant to the edition of VC (i.e., Express vs. Professional), I'm also assuming the reason that the x64 non-Professional build is failing is due to the additional toolset that is required and only available to the Professional edition.
Suggestion 2:
Add a [x64ToolSet] check, setting lib to 514 if true or 512 if false.
(something like this...)
#if _MSC_VER >= 1600
#ifdef _[x64ToolSet]
#ifndef GvCV_set
#define GvCV_set(gv,cv) (GvCV(gv) = (cv))
#endif
#endif
#endif
#ifdef _WINDOWS
#if _MSC_VER >= 1600 // for V100+ toolset
#ifdef _[x64ToolSet]
#pragma comment(lib, "perl514.lib")
#else
#pragma comment(lib, "perl512.lib")
#endif
#else
#pragma comment(lib, "perl512.lib")
#endif
#endif
(Again..speculation on a guess... I understand its more complicated than this, but maybe it'll spark an idea.)
Suggestion 3: (off-topic)
Adding library reference variables to project includes settings:
$EQEmu_Inc
$EQEmu_Lib
This would allow users to just add the following into their environment variables:
EQEmu_Inc = "c:\mysql\include;c:\perl\lib\CORE;c:\zlib\include"
EQEmu_Lib = "c:\mysql\lib\opt;c:\perl\lib\CORE;c:\zlib\lib"
(of course, zlib reference should be changed to reflect proper eqemusource SVN directory.)
Also, assuming that the zlib.dll is still needed/being used, just place ";c:\zlib" at the end of their Path variable so they don't have to "drop" a copy of the file in the ..\Windows\System32 directory.
Something for musing..my point on this goes back to me mulling over processes for my auto-installer and what code I'm going to have to change locally.
Scenario 1:
I run both VC9 & 10 on a single 32-bit cpu (no HT) winXP system. I have used perl 5.10.1.1008 and am currently using 5.12.4.1205. I have compiled on both versions of VC and haven't experienced a difference or noticed anything out of the ordinary using VC10 and perl 5.12.
Suggestion 1:
Convert code to "Perl512" reference and mark Server.sln(9) as defunct. VC10 Express is free and can still be registered (with a MSDN enrollment.)
Scenario 2: (speculative)
The "ifndef" for the MSCV checks for VC10 (1600) - the first occurrence in EQWParser.cpp. It then defines GVCV_Set if it finds >=1600. I'm not sure if this definition is VC10 or perl 5.14 related, so I'm assuming it's perl 5.14 since it's defaulted to for VC10. The next "ifdef" sets pragma (lib, "Perl5xx") based on the version found. Not knowing if the MSCV version is relevant to the edition of VC (i.e., Express vs. Professional), I'm also assuming the reason that the x64 non-Professional build is failing is due to the additional toolset that is required and only available to the Professional edition.
Suggestion 2:
Add a [x64ToolSet] check, setting lib to 514 if true or 512 if false.
(something like this...)
#if _MSC_VER >= 1600
#ifdef _[x64ToolSet]
#ifndef GvCV_set
#define GvCV_set(gv,cv) (GvCV(gv) = (cv))
#endif
#endif
#endif
#ifdef _WINDOWS
#if _MSC_VER >= 1600 // for V100+ toolset
#ifdef _[x64ToolSet]
#pragma comment(lib, "perl514.lib")
#else
#pragma comment(lib, "perl512.lib")
#endif
#else
#pragma comment(lib, "perl512.lib")
#endif
#endif
(Again..speculation on a guess... I understand its more complicated than this, but maybe it'll spark an idea.)
Suggestion 3: (off-topic)
Adding library reference variables to project includes settings:
$EQEmu_Inc
$EQEmu_Lib
This would allow users to just add the following into their environment variables:
EQEmu_Inc = "c:\mysql\include;c:\perl\lib\CORE;c:\zlib\include"
EQEmu_Lib = "c:\mysql\lib\opt;c:\perl\lib\CORE;c:\zlib\lib"
(of course, zlib reference should be changed to reflect proper eqemusource SVN directory.)
Also, assuming that the zlib.dll is still needed/being used, just place ";c:\zlib" at the end of their Path variable so they don't have to "drop" a copy of the file in the ..\Windows\System32 directory.
Something for musing..my point on this goes back to me mulling over processes for my auto-installer and what code I'm going to have to change locally.