And after a good look around, I can't figure out how to post a question nmor whom to post it to.
I've subscribed to the mailing list so we'll see if I can get an answer this way.
Tom P.

So, apparently the VC2003 issue has nothing to do with Firaxis.Originally posted by Sir Ralph
Boost is a pretty common class library. You can't simply change things there, that would be similar to changing things in the standard template library. Around the template in question is a #if/#endif, which limits the compiler version to at most MS C 13.00, while VC++ 2005 has 14.00. If the boost developers (which are NOT Firaxis) did this, and even named the macro BOOST_WORKAROUND, you don't want to fiddle with it without knowing the consequences for the whole library (which is huge).
Tom P.

And after a good look around, I can't figure out how to post a question nmor whom to post it to.
I've subscribed to the mailing list so we'll see if I can get an answer this way.
Tom P.

It is probably fixed in their latest release though. Firaxis uses the Boost libraries dated from when they started development on civ4.
Well, atleast the boost site claims complete vc2005 compatibillity for their recent releases.
no sig

You're a better man than I am - I couldn't even find that.
I can't even use the mailing list since it's c++sig@python.org the "++" part drives hotmail nuts.
I'll see if gmail handles it better.
Tom P.
Last edited by padillah; April 27, 2006 at 14:11.

Any one try upgrading Boost.python and compiling in VC 2005?
I would really like to use VC 2005. I use it at work and am very comfortable with it, as is.
Oh, well.
Tom P.

I downloaded the Express version of VisualStudio.NET 2005, then it states you must download (in sections for me) the March 2006 Platform SDK, and then while viewing the advertisement about Express and features, it may have stated that only Console Applications could be made. I hope not, as it is working, but it is for mainly for managed applications, and that makes it not sure for Native Code Applications like this one it is needed for.
Although it did say Win32 Apps when the Platform SDK is downloaded.
??

![]()
![]()
![]()
I have installed Boost 1.33.1 but could not get it to generate the boost_python-vc80-mt-1_33_1.lib & .dll![]()
However, somebody in Russia has these two files (but not the debug versions) available for download. I cannot speak or read Russian but the file name is the same (and they had a lot of Boost library files up there).
But I still got the same exact error (and warnings)![]()
I am going to try the method described earlier.

![]()
OK
I edited CyInfoInterface2.cpp (I could see that was the culprit file so Fromafar's solution seemed good) using option one:
.def("getUniqueRange", &CvBonusClassInfo::getUniqueRange, "int ()")
I choose this option because the name "getUniqueRange" implies a getter function: (I hope there is no setter implementation of this expected in the Python implementations. I guess I should look. Later.)
I still needed to add User32.lib to my project library list in my project settings. (winuser.GetKeyState() in a link error required it.)
Compile with no errors!
Problem:
I cannot find the DLL that is supposed to have been compiled with zero errors! Well, I will have to look into this later.
BTW:
I forgot to mention that to get the New Boost library to compile with this I changed the project file paths from the relative paths within the Civ SDK folders to a direct path to the Boost 1.33.1 library paths I had only freshly built and installed the other day. (I never took the time to find out why the Python libs and dlls did not get generated by Boost's bjam because I Googled the precompiled lib and dll at the Russian site. These files were placed in the Boost\lib directory.)

![]()
Found it!
Of course it is in the most natural place for me not to look
\assets folder!
named CvGameCoreDLL_RELEASE.dll

most important question: could you start a game succesfully?
no sig

![]()
No, got some Python initialization errors.
Had to go to bed for early day.
1> My first guess is that the function I edited needs setter functionality.
2> The Boost update may have broken the Python.
3> I also updated Python so I might have broken it there.
I know it is a Big NONO! to push upgrades like that but I am gonna have fun debugging it tonight!![]()

Ah, I think the last Platform SDK that will still work with Visual Studio 6 version is Feb. 2003 version, which is the last time that was updated. Perhaps that means that downloading a previous version of the Platform SDK more for VisualStudio.NET 2003 (which had some errors in it) may work and help with VisualStudio 2005 version. Right now, I am not sure of anything, but if the files are older and can be used to compile anything then perhaps that may work.
I am not sure if I am talking through my hat here, because to me the code looks like some managed version, which I am not familiar with at all. If it is pure C++ then even the standard libraries and such have been changed to reflect more of the ISO standard (whichever) in VisualStudio 2005 according to Microsoft.
Pretty much VisualStudio 2005 is changed all around, while that was still not done with VisualStudio.NET 2003.
?? Have to look into if further to see if one can download an earlier version of the Platform SDK and even if that may have anything to do with it.
mmmmmmmmmmmmm...........................have to read and think about that, I guess.

I have the latest Platform SDK.
I had to specify the User32.lib in my project.
I also moved all the PlatformSDK paths upto the top (Above DirectX) in my Options -> Projects_and_Solutions -> VC++_Directories.
This last step may have had no effect but it could have.

Direct X has to be first otherwise you use the Direct X provided when you installed the program (Visual Studio 2003 or 2005). In earlier versions of some programming program that could have been Direct X 5. That is not what you wanted, so in the Configuration Manager of the program, you add the lines of the PATH first so you use the Direct X version you want to program with. The Default Path may not lead to the files you actually want to use. The Platform SDK may be the same way. Since you install the program and it Defaults to a certain PATH (the path it installs with its own files included in the download), the program sets up a Default Path in the Configuration Manager. That may not be the files that you really want to use, so you have to add the PATH to the correct files. I think it should also work with it that way also the Platform SDK.
Afterall, one just uses the files from the Platform SDK from the PATH to use in the Project one is building, and whichever version you use is the version the Project will be built in.
In other words, if I wanted to use Direct X 7 in a build, and pointed to the SDK for Direct X 7, then those files will be used. Otherwise, I may point to Direct X version 8 or 9 and then those will be the files that I use. Of course my code would have to reflect that with the programming for the proper Direct X version or Platform SDK version. Since the programming for the game is for Version 7.1, you have to use the Build (compiler) that will Build the CvGameCore.dll file the proper way.
I think I will try that, and download the Platform SDK April 2005 version, since I have Visual Studio 2005 Express on my computer now also, and try that. If not I already downloaded the VisualStudio 2003 Toolkit.
I know the Project will not open in VisualStudio.NET 2002 version, since I have that, and it states the files are of the 7.1 version.
Visual Studio.NET 2002 is Version 7.0
Visual Studio.NET 2003 is Version 7.1
Visual Studio.NET 2005 is Version 8.0
And since they upgrade the Platform SDK (Microsoft bugs), the proper one should be used for the Civ IV game.
That means that if I download the April 2005 Version Platform SDK, it may work to build the Project even with Visual Studio 2005, I should hope.
Afterall, I have to download it all anyway, and also should download the new one (which is March 2006 or is that April 2006, but they did change Visual Studio 2005, so the March version would work if it was not buggy, thus the now April 2006 version to fix their bugs).
One thing I go by is that with the newer versions of the Platform SDK, Windows 2000 is not listed. But with the April 2005 Version, Windows 2000 is listed. I think since the game is for both OS's then the Platform SDK used in the game would have been at least one of the earlier versions, and I will use the one that states it works for Windows 2000 (April 2005 version) which still can be downloaded in Chucks of 25mB which is what I will have to do. (Use full download where it states it can be downloaded in 25mB chunks.)
18 files later or so, I will get back to finding out, how it all goes -- someday.
Only Microsoft can do all of this to YOU!
Spend more time checking Critical Updates, YOU may finally get an OS before Vista comes out.
One has to laugh someday to all of it.
link to Platform SDK April 2005 version:
http://www.microsoft.com/downloads/d...displaylang=en
If not fast connection, use what it says, and use the Full Download link so you can download it in 25mB chunks until done with all of it, and then install the darn thing by itsself in some folder (don't want to change anything else on your system or in your OS perhaps). Then take whatever Visual Studio version program (2003 or 2005) and make the necessary changes in the Configuration Manager to point to that folder, to find the files to use, that make the Compile of the CvGameCore.dll and put the PATH lines first in the Configuration Manager to use those files first instead of the Default Path PATH lines. (Perhaps that will work, I guess I will find out.)
In other words, like Direct X, I have a couple of versions of that, and I put (or change) the lines to point to whichever version I will use. (Direct X 8.1 or Direct X 9 - and of course newer versions can also be downloaded.)
Of course it is handy to always use the newest version of something like the Platform SDK or Direct X SDK, but if another program is already using a previous version build, the Calls and Programming may be slightly or greatly changed after Microsoft fixes their own BUGS in the darn things, after getting feedback from programmers who say that a certain something does not work correctly. That is why and with the April 2006 version even though Microsoft TRYS to keep things the same, it may not always be able to do that from Version to Version. Afterall they finally gave in to the ISO standard more, since the earlier Versions were not as compliant to that Standard used by just about everyone else.
April 2005 Version Platform SDK for chunks (25mB) downloading with a slow connection: (This will take time of course)
http://www.microsoft.com/downloads/d...displaylang=en
I think that is the correct one, as stated it works both with Visual Studio 2003 and Visual Studio 2005 and fixed some things.
They did not Include 3 Library files that must also be downloaded. But if the Configuration Manager PATH lines for the Program (VS.NET whatever version) points to the correct files, it should find all the files you need, if the Path is correct.
If noone minds, those 3 Library files can be downloaded at the link below and wherever you put them and point to them with the Path in the Configuration Manager (which is separated for Lib files, or Directories files or Include files - those famous *.h files to find for windows like - windowsx.h - then I think that will work:
Here is the other thread for those now lost completely now: (but it is not all that difficult to understand -- you need to find files, you need to set the Path for the Program to find those files, and then you can probably use Visual Studio 2005 Express to build a version 7.1 file and not a 8.0 version file, since that is what you are trying to do, by using a different Platform SDK download similiar to using a different Direct X version to make a Direct X something depending on whether it be Direct X 7, 8, 8.1, 9, 9.0a, or 9.0b, or 9.0c version whatever):
http://forums.civfanatics.com/showthread.php?t=166933
Don't lose the original Path lines in the Configuration for anything since they are put in as Default when you install the program, but then I am assuming that changing all of that will point to the Proper Platform SDK to make this game work with both versions of Visual Studio (2003 and 2005) and then, I guess I will find out if all of this was babbling or it will work in the end. I don't see why it should not. That I guess depends on if the Compiler Files are in the Platform SDK or the program will still Compile it correctly with the way the game was programmed. Crosses fingers because he really does not know, but hopes it will.
Ah, I have never tried this, so there is still the possibility that Visual Studio 2005 Express will stamp a Version 8.0 to the files, and that may not work. Well, maybe that can be changed also somewhere, but then again, it is a lot of work just for a game, because in the end Microsoft is the culprit here again. But perhaps that can be done, and then again, I may just be dreaming after all of that work. Such a plan, eh!
Afterall of that, a little explanation. The program installs with Default Paths to find certain files. The reason they state to put in the Path to the Version of Direct X you want to use --- first, is that if you do not, it will use the Default Path to find the Direct X version. In some cases that was Direct X Version 5. That is not what was wanted. You wanted to use Direct X Version 8.1, thus the Path for the Configuration Manager has to list them first. So even if you keep the Default Paths in the Configuration of whatever Visual Studio (2003 or 2005) if you put in the Paths to the files you want to use - first, then the program will first go to that Path, and will bypass the Installed Default Path, when the program was installed. This makes it possible to find the files you want to use, and build with those files, and you want to build a 7.1 version file for the game. (Direct X has nothing to do with this, but that is why it is Path that way - so the program can find those files first, and not use the Default Path of where the program (VS.NET) was installed. Those original Default Path files you do not want, put in the correct Path first ahead of the Default Path, and then the program finds the correct files to compile the CvGameCore.dll file with.
And it is not an *.EXE file, and should be a *.DLL file because the Project main file should have Saved that, or the file with the .vcproj whatever extension is. Open that, and all is well. Point to the correct files to Build (compile) the file and all is well then.
I am tired. Goodday!
Last edited by Raion; May 10, 2006 at 11:56.

I have retreated back to the Boost and Python that came with the SDK.
The game loads past the Python initialization now but crashes before going to full screen with an error in a msvc8 dll.
I have tried to attach with the debugger to a debug build of the dll and do not see any of the dll in the stack.
I have a feeling the new msvc8 compiled into the dll is breaking on msvc71 in the other parts of the game.
There may be a way around this but I do not see it yet (except to back track to vc2003)
I am at the end of today's work. I'll get on it tomarrow.

I see where Visual Studio 2005 Express is different, than having a Configuration Manager, but about the same thing in Options -> Projects & Solutions -> VC+ Directories, where the different PATHs seem to be. Separated for like -- Include files, Library files, executable files, and the like.
I thought for a minute I have to mess with the Import & Export the Settings file, and that is hard to look at, but it is still there also. I suppose change the above and Visual Studio 2005 Express must write it to the CustomSettings (if you Export) file or that main file for the program.
Whoa!
You may notice like with the -> Include files Directory, it has the Default Path with Platform SDK\include
and such. Above any of those listings I think one would PATH to the other Platform SDK that is downloaded whereever it is on your computer, so the program follows that PATH first, and ignores the Default File Paths.
Underneath that Options -> Project & Solutions -> V++ Directories is C++ Projects something in the next category of the Settings one can change.
I am not sure what Validate Schemas really is without looking it up, but either it is On or Off, as in True or False.
Maybe that would have something to do with the Version # of the files, perhaps, and then again, maybe not. I do not know what it is for sure.
----------------------------------------------------------------------
Well, I guess scratch all of that above and in the other post. According to someone else:
quote:
It is because VC++ 2005's compiler is incompatible with VC++ 2003's libraries, it seems that the exception handling is different.
end quote.
Back to the drawing board.
Leave it to Microsoft, well the Visual Studio 2003 Toolkit is mentioned over there to be downloaded for anyone.
The rest would again have to be looked into, or something would have to make it compatible with VS 2003 on the "Exception Handling" with VS 2005 then.
I don't think I saw anything on that, but I guess it does not hurt to take another look around again in VS 2005 Express.
![]()
Where Microsoft should be?
Last edited by Raion; May 11, 2006 at 10:14.

I have found no way to entice VC++2005 to build a DLL that Civ can use.
I have set up Code::Blocks and am currently attempting to get past the fatal error LNK1181: cannot open input file 'C:\Program Files\Microsoft Visual C++ Toolkit 2003\Lib.obj'
I have followed all the instructions. Still no help.
I will keep working on it.

The Lib.obj!
I knew it was something stupid!
In Code::Blocks, when you click on Settings ->Compiler and open the Compiler_Settings window, there is a
First Tab named Linker:
Do NOT put:
C:\Program... ...\lib
in THIS Linker Tab!
Go into:
Tab named Directories
There you will find a:
Second Tab named Linker UNDER Tab named Directories
PUT HERE:
C:\Program... ...\lib
C:\Program... ...\lib
The first Linker Tab is for specific libraries you might want to link to if you don't want everything in a whole directory!
Last edited by chrusion; May 11, 2006 at 23:19.

According to what I have seen:
No, Visual C++ 2005 Express will not work because of the compiler to make the game file DLL. It has to be the Visual Studio 2003 Toolkit with Codeblocks used for the IDE then, because the toolkit only contains a Command Line Compiler.
I doubt if the compiler and linker and such can be moved to Visual C++ 2005 Express, because that program checks the Version Number of the file in question and immediately wants to upgrade it to Version 8.0 file. That with the compiler and linker supplied with the program makes it incompatible with the 2003 7.1 version of the file.
So...................................back to Visual Studio 2003 Toolkit with Codeblocks IDE to work with CvGameCoreDLL.dll file.

I can't believe that there's something in the source that binds the source to a specific version of the compiler/linker.
How do we contact Firaxis and find out what is the big deal? There's got to be a way to compile this in VC 2005.
I would feel a lot better if the process wasn't so delicate. I like code that compiles, I'm funny that way.
Tom P.

While true, I am not sure whether this would cause any problems. When the DLL and main program each handle their own exceptions and memory allocation/deallocation, it might still work.Originally posted by Raion
According to someone else:
quote:
It is because VC++ 2005's compiler is incompatible with VC++ 2003's libraries, it seems that the exception handling is different.
end quote.
Something that has changed for sure is the generation (mangling) of function names. When you have "Treat wchar_t as Built-in Type" set to Yes (the default), the generated names of functions using wchar_t are different. If you want VC++ 2005 to generate the same names as VC++ 2003, you have to set this property (Configuration properties | C/C++ | Language) to No.

Well, do you want the exact differences I experienced with Visual C++ 2005 Express, which probably also requires a Plug-In for Source Control?
With no Conversion to 8.0 there would be 2 errors and 3 warnings, but after Conversion, since it is seemingly an automatic program, whereas the files will not even load up in the IDE, there are 0 errors and 3 warnings, but the darn program does it all on its own, since the file version is 7.1 for the files, they will not even load up in the program first of all to change anything, without being --> Converted.
Now for what happens with Visual C++ 2005 Express when loading up the .vcproj file for the game.
It makes a new Project file which is 5kb bigger in size. Askes about Source Control Plug In, in which case I do not change and the difference between VS2003 and the 2005 Express program will be this:
Welcome to the Visual Studio Conversion Wizard
The solution or project you are opening was created in a previous version of Visual Studio. It must be converted to the format used by this version. After a solution or any of its projects has been converted, it can no longer be edited, built, or run in previous versions.
If the solution or project is under source control, it will be checked out automatically during the conversion. Be sure the correct Source Control Plug In is active, and no files are exclusively checked out by other users. (may need Source Control Plug In from somewhere -- note by me, not by program as rest of it.)
Click Next to proceed.
Next screen:
Do you want to create a backup before converting?
No
Yes, create a backup before converting
Choosing this option will create a backup file next to each converted file.
Warning:
The source control provider associated with this solution could not be found. The projects will be treated as not under source control.
Do you want to permanently remove the source control bindings from the projects?
Yes
No
Duh, well NO! -- my comment and not the program.
Time of Conversion: Thursday, May 11, 2006 16:38:34 PM
Project: CvGameCoreDLL
Filename Status Errors Warnings
javascript:javascript:CvGameCoreDLL.vcproj Not Converted 2 3
Conversion Issues - CvGameCoreDLL.vcproj:
Visual C++ now supports a secure version of the C Runtime Library. Use of this library is turned on by default. You may see some warnings about deprecated functions when you build your project. It is advised that you correct these warnings, in order to make your code more secure.
The C/C++ compiler default settings have been modified to be more compliant with ISO Standard C++. Included in those changes are enforcing Standard C++ for loop scoping and supporting wchar_t as a native type. These changes may cause existing code to no longer compile without changes to the code or the compiler options with which it is built.
Due to a change in the exception handling switches for the C/C++ Compiler, /EHsc has been automatically converted to /EHa in this project.
Project file successfully backed up as 'K:\Sid Meier's Civilization 4\SDK\CvGameCoreDLL_v161\CvGameCoreDLL\CvGameCoreD LL.vcproj.7.10.old'.
The C/C++ compiler switch /Og has been deprecated and has been removed from your project settings. It is recommended that you use /O1 or /O2 instead.
Due to the requirement that Visual C++ projects produce an embedded (by default) Windows SxS manifest, manifest files in the project are automatically excluded from building with the Manifest Tool. It is recommended that the dependency information contained in any manifest files be converted to "#pragma comment(linker,"")" in a header file that is included from your source code. If your project already embeds a manifest in the RT_MANIFEST resource section through a resource (.rc) file, the line will need to be commented out before the project will build correctly.
Due to a conformance change in the C++ compiler, code change may be required before your project will build without errors. Previous versions of the C++ compiler allowed specification of member function pointers by member function name (e.g. MemberFunctionName). The C++ standard requires a fully qualified name with the use of the address-of operator (e.g. &ClassName::MemberFunctionName). If your project contains forms or controls used in the Windows Forms Designer, you may have to change code in InitializeComponent because the designer generated code used the non-conformant syntax in delegate construction (used in event handlers).
Failed to upgrade project file 'K:\Sid Meier's Civilization 4\SDK\CvGameCoreDLL_v161\CvGameCoreDLL\CvGameCoreD LL.vcproj'. Please make sure the file exists and is not write-protected.
Project upgrade failed.
1 file Converted: 0
Not converted 1 2 3
Conversion Settings
Solution File: K:\Sid Meier's Civilization 4\SDK\CvGameCoreDLL_v161\CvGameCoreDLL\CvGameCoreD LL.sln
If the solution or project is under source control, it will be checked out automatically during the conversion. Be sure the correct Source Control Plug In is active, and no files are exclusively checked out by other users.
Conversion type: In-place with side by side backup.
Solution to be converted: CvGameCoreDLL
Projects:
CvGameCoreDLL
All projects converted successfully with some warnings. Please see the conversion log for complete information.
Time of Conversion: Thursday, May 11, 2006 16:46:29 PM
Project: CvGameCoreDLL
Filename Status Errors Warnings
javascript:javascript:CvGameCoreDLL.vcproj Converted 0 3
Conversion Issues - CvGameCoreDLL.vcproj:
Visual C++ now supports a secure version of the C Runtime Library. Use of this library is turned on by default. You may see some warnings about deprecated functions when you build your project. It is advised that you correct these warnings, in order to make your code more secure.
The C/C++ compiler default settings have been modified to be more compliant with ISO Standard C++. Included in those changes are enforcing Standard C++ for loop scoping and supporting wchar_t as a native type. These changes may cause existing code to no longer compile without changes to the code or the compiler options with which it is built.
Due to a change in the exception handling switches for the C/C++ Compiler, /EHsc has been automatically converted to /EHa in this project.
Project file successfully backed up as 'K:\Sid Meier's Civilization 4\SDK\CvGameCoreDLL_v161\CvGameCoreDLL\CvGameCoreD LL.vcproj.7.10.old'.
Project upgraded successfully.
The C/C++ compiler switch /Og has been deprecated and has been removed from your project settings. It is recommended that you use /O1 or /O2 instead.
Due to the requirement that Visual C++ projects produce an embedded (by default) Windows SxS manifest, manifest files in the project are automatically excluded from building with the Manifest Tool. It is recommended that the dependency information contained in any manifest files be converted to "#pragma comment(linker,"")" in a header file that is included from your source code. If your project already embeds a manifest in the RT_MANIFEST resource section through a resource (.rc) file, the line will need to be commented out before the project will build correctly.
Due to a conformance change in the C++ compiler, code change may be required before your project will build without errors. Previous versions of the C++ compiler allowed specification of member function pointers by member function name (e.g. MemberFunctionName). The C++ standard requires a fully qualified name with the use of the address-of operator (e.g. &ClassName::MemberFunctionName). If your project contains forms or controls used in the Windows Forms Designer, you may have to change code in InitializeComponent because the designer generated code used the non-conformant syntax in delegate construction (used in event handlers).
1 file Converted: 1
Not converted 0 0 3
Conversion Settings
Solution File: K:\Sid Meier's Civilization 4\SDK\CvGameCoreDLL_v161\CvGameCoreDLL\CvGameCoreD LL.sln
Log Number: 2
-----------------------------
Back to just using the Toolkit for VS 2003, and the Source Control Plug In, I do not know about, but since that metafile is there included with the project I just leave well alone.
Unless someone knows a lot about the differences, I guess Visual C++ 2005 Express I am not going to mess around with, to change anything in the Civ IV Game, and the Toolkit will be the only way it seems to go with the game.
Now maybe Visual Studio 2005 NET would be different, but somehow I doubt it. It surely with the Express Edition is going to Convert the files, and do that or else not even load them into the IDE to even look at.
After looking at the Express Edition in which I changed what was included with the Toolkit and changed the Include Folder, and the Lib Folder, and the Bin Folder using the Toolkits' folders for Visual C++ 2005 Express, the program did work, but it is only a Command Line -- compiler and linker, so again the program asked to Convert the files first, before it will even load them into the IDE. I changed it all back, and there are other things with all of that, that even the Full Version of Visual Studio.NET 2003 probably could not be used. XML files for Configuration files, different *.bat files for Express 2005, so although I do not know Visual Studio.NET 2003, I doubt in the end, anything from that program could be used with Visual Studio 2005, and all of it is changed around, so back to the 2003 Toolkit.
It may be easier to convince Soren or Sid to use Codeblocks, and download the Watcom compiler and use that, so players can change the game, perhaps.

Our only hope to compile with VC2005 is if Firaxis also switches to VC2005 for the Warlords expansion (and releases a new SDK for that ofcourse).
no sig

Perhaps, someone should attempt to convey that message to them (Firaxis), and tell them about it, so at least they know about it, and perhaps could do that.
Perhaps they are doing that, but alas again perhaps they are not.
Append update:
Probably the other people already using Visual Studio 2005 did this:
You can Import and Export "Settings" for the program:
Visual C++ 2005 Express (freebie program) to change things around first before loading up the Project.
I doubt if that will do anything, but I may stare at it for awhile. Meaning that perhaps there is a way to turn off the Conversion Wizard, and change the compiler settings first for the project, but I doubt if it will make the 'coding' needed (to remain the same) for the 2003 version of CvGameCoreDLL.dll to not change with the above previous post listing about 'member functions' needing now the 'address-of' changes for the member functions anyway. Well, may not hurt to look, even if it accomplishes nothing in the end about it.
No doubt Microsoft is in this World to make money, and not be compatible with previous versions of their software.
Like ms-dos in Windows 2000 compared to Windows 98 starting up in ms-dos. Perhaps.
![]()
Last edited by Raion; May 13, 2006 at 11:46.

Okay. Using Visual C++ 2005 Express:
Instead of opening up the Project file as a 'Project' I opened it up -- as a 'File'. Used 'Open File' instead of 'Open Project'.
I viewed the vcproj file and noticed that it had in there that it was a 'Version 7.10' file. I said 'Why not just change that to 'Version 8.0' and see what happens?
This is what happens:
Your project file version is '8.0'. Visual Studio 2005 can only load version 7.0 and 7.1 project files.
The following error has occurred during XML parsing:
File: K:\Sid Meier's Civilization 4\SDK\CvGameCoreDLL_v161\CvGameCoreDLL\CvGameCoreD LL.vcproj
Line: 12
Column: 22
Error Message:
Unspecified error
The file 'K:\Sid Meier's Civilization 4\SDK\CvGameCoreDLL_v161\CvGameCoreDLL\CvGameCoreD LL.vcproj' has failed to load.
Otherwise I still get the Conversion Wizard starting up, and so far, I have not found a way to turn that off --- yet.
Intellisense no doubt!
Yes, it is, and after all of that, this is what I did:
In Visual C++ 2005 Express, I started the program.
On the 'File' menu item is 'New' of course, but one of the options is creating a 'New' Project from an 'Existing Project' and pointed to the folder that holds all the files from the CvGameCoreDLL SDK folder. Of course, I only named it CvGameCore for the Project, and pointed to another folder to hold all the files in. Now, what I have is a 'New' project file that looks similiar (I have not checked it all out yet) to the old 'Project File' given by the SDK, but in it it states now, that it is 'Version 8.0' instead of like the old one 'Version 7.1' and anything else just glancing at it looks about the same, although I will check it against the two versions to see.
Now it loaded up, all the C++.cpp files, the Boost files and folder, and the Python 2.4 folder and files, and what I think is not loaded up is:
The old project file, or Control file or:
CvGameCoreDLL.vcproj.vspscc
CvGameCoreDLL.vcproj
Since it asked what kind of Project it would be, when it made it, one would have to state the option "Dll project" when it asks what kind of project it is. Then it will ask for 'Include files" and that stuff, and whether it is 'Debug' or not, but since I do not yet have the Platform SDK files, I left them blank for now. When I get those, then I will add all that stuff later for the PATH Environment and such.
Right now, I am just comparing things to see what files it added:
New Project file, which for some reason appends my user name to it, and a Solution file, and such, which appends my computer name to all of it.
Right now, the Control file (and the old project file) is not in there yet, (but the Control file will be needed I think or something similiar when I get it all worked out), and I am just looking around.
The Conversion Wizard, I don't think did anything, so if the files are the same, then of course there will be 'Errors' if anyone tried and 'Build It with the new compiler' but again, I am just fooling around with it for now.
See what it states as wrong with it, I guess, as to anything.
Last edited by Raion; May 13, 2006 at 13:45.

Edit this post, although I think some of the settings will still be wrong as of yet:
I tried to go by the old vcproj file which holds the information but there is more in Visual C++ 2005 Express, so trying to make it the same, well, is hard to do:
C/C++ Command Line:
Debug:
/O2 /I "L:\SDKNewProject\CvGameCoreDLL_v161\CvGameCoreDLL\ Boost-1.32.0\include"
/I "L:\SDKNewProject\CvGameCoreDLL_v161\CvGameCoreDLL\ Python24\include"
/D "WIN32" /D "_DEBUG" /D "_WINDOWS"
/D "_USRDLL" /D "CVGAMECOREDLL_EXPORTS"
/D "_WINDLL" /D "_MBCS" /FD /EHsc /RTC1 /MDd /GS- /Gy /Zc:wchar_t- /Zc:forScope- /Fo"Debug\\" /Fd"Debug\vc70.pdb" /W3 /nologo /c
/ZI /clrldSyntax /TP /errorReport
rompt
Release:
/O2 /I "L:\SDKNewProject\CvGameCoreDLL_v161\CvGameCoreDLL\ Boost-1.32.0\include"
/I "L:\SDKNewProject\CvGameCoreDLL_v161\CvGameCoreDLL\ Python24\include"
/D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_USRDLL" /D "CVGAMECOREDLL_EXPORTS" /D "_WINDLL"
/D "_MBCS" /FD /EHsc /RTC1 /MD /GS- /Gy /
Zc:wchar_t- /Zc:forScope- /Fo"Release\\" /Fd"Release\vc70.pdb" /W3 /nologo /c
/ZI /clrldSyntax /TP /errorReport
rompt
Linker Command Line:
Debug:
/OUT:"Debug\CvGameCoreDLL.dll" /INCREMENTAL:NO /NOLOGO
/LIBPATH:"L:\SDKNewProject\CvGameCoreDLL_v161\CvGameCoreDLL\ Python24\libs"
/LIBPATH:"L:\SDKNewProject\CvGameCoreDLL_v161\CvGameCoreDLL\ Boost-1.32.0\libs"
/DLL /MANIFEST /MANIFESTFILE:"Debug\CvGameCoreDLL.dll.intermediate.manifest" /DEBUG /
PDB:"l:\sdknewproject\debug\CvGameCoreDLL.pdb"
/SUBSYSTEM:WINDOWS /OPT:NOWIN98
/IMPLIB:"Debug/CvGameCoreDLL.lib" /MACHINE:X86
/FIXED:No /ERRORREPORT:PROMPT boost_python-vc71-mt-gd-1_32.lib
winmm.lib kernel32.lib
Release:
/OUT:"Release\CvGameCoreDLL.dll" /INCREMENTAL:NO /NOLOGO
/LIBPATH:"L:\SDKNewProject\CvGameCoreDLL_v161\CvGameCoreDLL\ Python24\libs"
/LIBPATH:"L:\SDKNewProject\CvGameCoreDLL_v161\CvGameCoreDLL\ Boost-1.32.0\libs"
/DLL /MANIFEST /MANIFESTFILE:"Release\CvGameCoreDLL.dll.intermediate.manifest" /DEBUG
/PDB:"l:\sdknewproject\release\CvGameCoreDLL.pdb"
/SUBSYSTEM:WINDOWS /OPT:REF /OPT:ICF
/OPT:NOWIN98 /IMPLIB:"Release/CvGameCoreDLL.lib"
/MACHINE:X86 /FIXED:No /ERRORREPORT:PROMPT boost_python-vc71-mt-gd-1_32.lib
winmm.lib kernel32.lib
This is just what I ended up doing so far, and I sure the 'Release' version probably should have a few more changes to it, then being about the same as the 'Debug' version, but both can be set.
It mentioned that using '/Zi' in the C++ part, then the Linker should also be set with that - but I see no where to set it. Instead of the Version 80 files somewhat listed, I threw in the 70 files name. That may have to be changed again, usually the file ends in *.pdb .
It probably is still wrong. But..................
I know this is long, but I will be:
staring, staring, staring, staring, staring, staring at it all.
That is going to be it for awhile, as anything else...............I do not know yet about any of it.
![]()
Last edited by Raion; May 13, 2006 at 19:03.

Oh, the reason for changing the C++ Part (compiler) and the Linker part of the Configuration which can be brought up by Right Clicking on the Project and selecting --> Property Pages, is to set the Compiler and Linker to something that may (and it is a big may) make it more compatible with the compiler and linker of VisualStudio.NET 2003. As of yet I do not know, if anything will work.
One can look at the old Project file (the 7.1 Version) in Notepad (it is text) and the New one (Project file in the 8.0 version which also contains more - so that makes it difficult to decide some items) and where it states something with a number like "3" as the value, if you select the same thing in the new compiler and go through all of that, the Options I am assuming on one of those Command Lines start with "0" with some of the dropdown lists to select whatever.
An example is what machine are you Building the file for:
In the old project file (*.vcproj) the value for Machine like listed up above in the Previous Post is "3", so in the dropdown list for that item, start with "0" and pick the fourth one, which would give the value of "3" even though it states that it is for an I86x machine which of course is a Intel processor. Sorry, only can pick one or the other. With some -- that left the phrase "Inherit from other project or ........." or something like that, so I wonder if that will even happen since the old project file is not really loaded up in the New Project.
In the text of those files is what all those Settings are but written out in 'text', but more Options for Settings are in Visual Studio 2005, and some, well, may be a guess right now.
Most of the ones for Visual Studio 2003 you can find in Visual Studio 2005 to set all of that via the Property Page, which I just call the Configuration Manager, or "How are you going to compile and link this project type question?".
It may not all work, as one Option is Setting the language to use, but that is for the C runtime Library, as in ---> Don't set it (probably means use the Default), Set it to C runtime Library -- pure code, Set it to C runtime Library -- Safe code (I think the compiler Defaults to that Option now, thus the Conversion Wizard perhaps), or Set that Option to C runtime Library -- Old Syntax.
The only problem is what Old Syntax are they talking about:
The real old Syntax like PrintF functions calls or the slightly newer Syntax like what was before with their Programming IDE that may match or use the older code that makes it more compatible with Previous Versions of *.NET.
Of course, that may not do anything, because it is C++ one is actually using, but it may, but then again, only it can be tried.
I know one that could be changed and that was the automation setting of "/EHsc" to "/EHa" by that Conversion Wizard as the Default, which has a Direct Relation to being different than what is wanted, according to the Settings used in CodeBlocks for that Item.
That is where all those items are, and that is where you can change them all, and perhaps, it may or may not work anyway.
![]()

Better to use the Microsoft Visual C++ Toolkit 2003 for this changing the CvGameCoreDLL.dll project.
Include files location if anyone wanted to know:
CvGameCoreDLL.h --> Include files location
windows.h // PlatformSDK\Include
MMSystem.h // PlatformSDK\Include
crtdbg.h // I:\Microsoft Visual C++ Toolkit 2003\include
vector // I:\Microsoft Visual C++ Toolkit 2003\include
list // I:\Microsoft Visual C++ Toolkit 2003\include
tchar.h // I:\Microsoft Visual C++ Toolkit 2003\include
math.h // I:\Microsoft Visual C++ Toolkit 2003\include
assert.h // I:\Microsoft Visual C++ Toolkit 2003\include
map // I:\Microsoft Visual C++ Toolkit 2003\include
hash_map // I:\Microsoft Visual C++ Toolkit 2003\include
CvString.h
string // I:\Microsoft Visual C++ Toolkit 2003\include also includes string.h and xstring and mbstring.h and cstring
Also if anyone wanted to turn-off Intellisense in Visual C++ 2005 Express:
Simply rename or delete\VC\vcpackages\feacp.dll
Other than that, Intellisense takes a long time to update, and the rest is (changing compiler settings or linker settings or "Forcing a Path to Use" like 2003 Toolkit instead) may be done, but getting past the issues that others are also having with all of it, is just the way Microsoft Programmed anything with 2005 in the Title of the Product.
Back to Codeblocks then.

I thought I explain a little bit, although I also am doing this for my own benefit.
Someone downloads the Platform SDK, and I had to download the segmented piece by piece 25mb sections of the Platform SDK. Then you need a program that will use it. However to me, and I may be wrong, it can be a dangerous program. But luckily once you get to the real setup.exe program, it usually wants to install to its own directory. That is fine, but you also have to Register it, or it will not install correctly to use.
So, the first little segment program of about 94kB extracted two files. One was a ms-dos batch file program along with the "extract.exe" program for extracting the Platform SDK in the first place.
So one starts up the ms-dos Command Prompt and trys to run the batch file --> PSDK-FULL.bat ---> but the echo is off (try and see what the heck is happening when you try and run it.) It disappears along with the ms-dos Command Prompt program and really nothing happened.
Well the "PSDK-FULL.bat" file at the ms-dos Command Prompt needs a target Directory (Folder) to "extract" all the *.cab files segments you downloaded. Put in a Target Directory and it will work, however put it where you want it. (Make a new folder in Windows perhaps). On my computer, that was on the I:\ drive. (REM We need a targetdir ---- Echo Usage: psdk-full.bat)
(Echo Example: psdk-full.bat c:\temp -----
Example: psdk-full.bat c:\temp)
However! You never see it, because it is done before you can even begin to read it, without changing the first line of the batch file by -- Right Clicking in Windows and choosing "Edit" as what to open it with. (do not open it, that just runs it, but you want to Edit the file, so the first line "Echo Off" is changed to "Echo On". (that way you an see what will happen while in the ms-dos Prompt and know you have to also give it a Target Directory.)
So --> psdk-full.bat I:\PlatformSDK2005 (at the ms-dos Command Prompt is what you do to unleash the monster Platform SDK to get it even ready to install).
Command Prompt Example:
I:\PlatformSDK2005> psdk-full.bat I:\PlatformSDK2005
since I am just changing the Directory in the ms-dos Command Prompt Program -- you can choose your own.
C:> cd I:
I:> cd PlatformSDK2005
here we are now to run the batch file program with the above command to "extract" the files of the Platform SDK in some folder of your choosing after making a New Folder in the first place in Windows.
Then it runs, so you go back to Windows and go in Explorer and to that Folder (Directory). There you will see -- three, and not just one -- setup.exe type programs. Well "setup.exe" is the program you want to run especially with Windows 2000 --- one is for AMD processor, and the other "setup.exe" type program is for 64bit OS systems, but "setup.exe" will also include those in the end but you really want 32bit Windows yet.
Then you get to install it in Windows to somewhere, so I chose to install it to a subfolder of the Microsoft 2003 Toolkit (which also has some folders for using a Path statement in the Enviroment also which has it own "Include" and "Lib" files). So I installed it, and one has to "Register" it so Microsoft 2003 Toolkit can use it to build -- the game file. Otherwise, it gave that it would not Register it on my system -- since I probably have newer files already downloaded through Windows Update, and the program automatically "X" that out. But you have to "Register" it or the files will turn out not being usable to the Microsoft 2003 Toolkit program.
Now, it is all installed in its own directory (folder) and now I can set Microsoft 2003 Toolkit -- like the first post, but put the PATH statements to the "Include" and "Lib" folders of the Platform SDK. That is where all those "windows.h" type files are and will be needed to "Compile" and "Link" the CvGameCoreDLL.dll program in the first place, or else in the "Default" PATH setup when 'installing' the Toolkit with its own "folders" that also have files in them. This makes putting the PATH to the Platform SDK look there first, and if not there, go to the 'Default" install path folders and look for whatever file it needs there after that.
So, happy building of the CvGameCoreDLL.dll, and all of that afterwards.
![]()
Just put the Correct Path in CodeBlocks as explained in the first post, but knowing where you installed the Platform SDK on your computer. This does not change any other program then, or anything else, because you put the Platform SDK in its own folder and changed the PATH to look for those files in the Microsoft 2003 Toolkit similiar to the first post.
So you can use any Platform SDK if it works with the Microsoft 2003 Toolkit, depending on what was used to build the file in the first place -- like CvGameCoreDLL.dll file.
This will ensure that the file you build will be compatible with the game.
blah!
Last edited by Raion; May 27, 2006 at 12:57.

So, what's the situation now with Warlords? Will we get a new SDK after the "final patch" again or no updated SDK ?
no sig
Bookmarks