FCollada / Visual Studio 2005

Hello,

has anyone experiences with compiling / using FCollada-Libs under Visual Studio 2005?
I’ve got into serious trouble, the more strict compiler seems to reject a lot of constructions (default-int no longer supported, missing template-specialisation with std::vector in vector class, …) und using the pre-compiled libs in a vs2005 project results in problems with std::_string_base::_xran / _xlen

Greetings,
Sebastian Jancke

I forgot: was it the right place for this question / topic ?

Also not sure I this is the right forum but from my experience I think you need to rebuild FCollada against the 2005 STL. I was also having problems with this but I managed to get it to work. If I remeber right, my changes where:

FMArray.h line 41:

	vector(const std::vector<T>& copy) : std::vector<T>(copy) {}

FUFileManager.cpp line 247:

		if (filePath.size() < 2 || (filePath[1] != ':' && filePath[1] != '|')) 
		{ 
#ifdef UNICODE 
			const fstring fs =L"/"; 
#else 
			const fstring fs="/"; 
#endif 
			filePath.insert(0,fs); 
		}

I then turned off “Treat Warnings As Errors” for all the projects. I also only cared about building the debug and release unicode multithreaded runtime library dll versions, so for all the projects I changed the “Runtime Library” field to in the debug and release configs to Multi-threaded Debug DLL and Multithreaded DLL respectively. Next, I did a batch build then excuted the following the output directory:

 
lib FColladaSUD_MTD.lib "Debug MTD\LibXML\LibXML.lib" "Debug Unicode MTD\FMath\FMath.lib" "Debug Unicode MTD\FUtils\FUtils.lib" 
lib FColladaSU_MTD.lib "Release MTD\LibXML\LibXML.lib" "Release Unicode MTD\FMath\FMath.lib" "Release Unicode MTD\FUtils\FUtils.lib" 
 

Anyway, I think that’s it, I probably could have streamlined it a little more but whatever, the .libs work. Personally, real vs2005 support can’t come soon enough since this is becoming a chore, I have no problem building myself but plethora of little fixes required is kind of aggravating version after version.

well, i’ll give it another try…

but what’s about this:

lib FColladaSUD_MTD.lib "Debug MTD\LibXML\LibXML.lib" "Debug Unicode MTD\FMath\FMath.lib" "Debug Unicode MTD\FUtils\FUtils.lib"
lib FColladaSU_MTD.lib "Release MTD\LibXML\LibXML.lib" "Release Unicode MTD\FMath\FMath.lib" "Release Unicode MTD\FUtils\FUtils.lib"

??

Greetings,
Sebastian Jancke

We have no plans, right now, to upgrade to VS 2005 and we have no plans to support both VS 2003 and VS 2005.

On the other hand, if there are changes that would help support for 2005 and won’t affect our work on VS 2003, I have no problem with integrating them for the next release.

Please email me a unified diff of all the changes, or just the modified files and I’ll see what I can do.

Sincerely,

Sorry, the line wrapping messed that part up. Basically you just use lib to merge the libraries.

Also, thanks for the info, I’ll send you a diff as soon as I can, unfortunately, most of the changes are in the project files themselves.

I’ve been having problems getting it to compile in Visual Studio 2005 as well.

I got it to work with the unicode configurations although I didn’t need to combine libraries as suggested.

I also needed to make an additionaly change. In FUEventTest.cpp and FUFunctorTest.cpp I had to add a & in front FUTCallee::Callback* for several lines. For example:


caller.event0->InsertHandler(new FUFunctor0<FUTCallee, void>(&callee, &FUTCallee::Callback0_1));

I’m not sure what the reprocussions of doing this are.

When I compile using a non-unicode configuration, I get several linker errors. Here’s one of them:


FCTEIExtra.obj : error LNK2019: unresolved external symbol "public: class FCDEAttribute * __thiscall FCDENode::AddAttribute(char const *,wchar_t const *)" (?AddAttribute@FCDENode@@QAEPAVFCDEAttribute@@PBDPB_W@Z) referenced in function "bool __cdecl FCTestExportImport::FillExtraTree(class FULogFile &,class FCDExtra *)" (?FillExtraTree@FCTestExportImport@@YA_NAAVFULogFile@@PAVFCDExtra@@@Z)

It seems to be related to unicode and wchar_t somehow. Does anyone have any idea how to fix this? Thanks in advance.

Well, I’ve managed to compile all the libs as multithreaded debug unicode using the above mentioned changed in FMArray.h and FUFileManager.cpp, and switching “Treat Warnings As Errors” to “no”.

However, using these libs in my app, compiled as multithreaded debug dll unicode results an error: “msvr80.dll” not found. Well looks like the manifest embedded by vs2005 has a defect, so I’ve copied the dll into system32. But now, I’ve getting an error of the form “R6034 An application has made an attempt to load the C runtime library incorrectly”.

Well, this happens at a point, were vs2005 loads the symbols when debugging…

Has anyone an idea what to do?

problem disappeared somehow… strange.