Automatically generated WAF solution fails to load - c++

Cryengine as an SDK has recently switched from providing pre-made solutions to forcing developers to use a WAF based build system to automatically generate a visual studio solution. Right now, there's very little communication coming from Crytek about problems everyone is having with the new build system so I was hoping someone here might be able to help.
I'm getting Cry-WAF (Crytek's WAF based build system) to generate a solution, but when I open it it provides an error (quoted below) and in the solution explorer appends (load failed) to each project in the solution. I first had an issue generating the solutions with Cry-WAF's msvs.py script saying it couldn't gather properties for platforms/configurations, but that eventually stopped and allowed the solution to be generated with the quoted problem.
A generic google search on the root cause suggested I try enabling IIS, but that has done nothing to fix the problems. Editing the .vcxproj files shows that they're correctly listing the paths to all files associated with that project. The only thing missing in the solution seems to just be the information that would tell what compiler to use, target names, target paths, etc. With what little I know about WAF as a build system, I'd assume that the python code Crytek is using to gather that information is just utterly failing.
Does anyone have a suggestion on what could possibly be done?
c:\Program Files (x86)\Steam\SteamApps\common\CRYENGINE\CRYENGINE_pc_eaascode\Solutions.depproj\CryAction.vcxproj : error : The composition produced a single composition error. The root cause is provided below. Review the CompositionException.Errors property for more detailed information.
1) Specified argument was out of the range of valid values.
Parameter name: index
Resulting in: An exception occurred while trying to get the value of property 'Microsoft.VisualStudio.Project.VisualC.VCProjectEngine.VCConfigurationMef.VCConfigurationShim'.
Resulting in: Cannot get export 'Microsoft.VisualStudio.Project.VisualC.VCProjectEngine.VCConfigurationMef.VCConfigurationShim (ContractName="Microsoft.VisualStudio.Project.VisualC.VCProjectEngine.VCConfigurationShim")' from part 'Microsoft.VisualStudio.Project.VisualC.VCProjectEngine.VCConfigurationMef'.
Element: Microsoft.VisualStudio.Project.VisualC.VCProjectEngine.VCConfigurationMef.VCConfigurationShim (ContractName="Microsoft.VisualStudio.Project.VisualC.VCProjectEngine.VCConfigurationShim") --> Microsoft.VisualStudio.Project.VisualC.VCProjectEngine.VCConfigurationMef
Resulting in: Cannot set import 'Microsoft.VisualStudio.Project.VisualC.VCProjectEngine.VCLegacyEventsTranslator.VCConfiguration (ContractName="Microsoft.VisualStudio.Project.VisualC.VCProjectEngine.VCConfigurationShim")' on part 'Microsoft.VisualStudio.Project.VisualC.VCProjectEngine.VCLegacyEventsTranslator'.
Element: Microsoft.VisualStudio.Project.VisualC.VCProjectEngine.VCLegacyEventsTranslator.VCConfiguration (ContractName="Microsoft.VisualStudio.Project.VisualC.VCProjectEngine.VCConfigurationShim") --> Microsoft.VisualStudio.Project.VisualC.VCProjectEngine.VCLegacyEventsTranslator
Resulting in: Cannot get export 'Microsoft.VisualStudio.Project.VisualC.VCProjectEngine.VCLegacyEventsTranslator (ContractName="Microsoft.VisualStudio.Project.VisualC.VCProjectEngine.VCLegacyEventsTranslator")' from part 'Microsoft.VisualStudio.Project.VisualC.VCProjectEngine.VCLegacyEventsTranslator'.
Element: Microsoft.VisualStudio.Project.VisualC.VCProjectEngine.VCLegacyEventsTranslator (ContractName="Microsoft.VisualStudio.Project.VisualC.VCProjectEngine.VCLegacyEventsTranslator") --> Microsoft.VisualStudio.Project.VisualC.VCProjectEngine.VCLegacyEventsTranslator
Resulting in: Cannot set import 'Microsoft.VisualStudio.Project.VisualC.VCProjectEngine.VCConfigurationMef.EventsTranslator (ContractName="Microsoft.VisualStudio.Project.VisualC.VCProjectEngine.VCLegacyEventsTranslator")' on part 'Microsoft.VisualStudio.Project.VisualC.VCProjectEngine.VCConfigurationMef'.
Element: Microsoft.VisualStudio.Project.VisualC.VCProjectEngine.VCConfigurationMef.EventsTranslator (ContractName="Microsoft.VisualStudio.Project.VisualC.VCProjectEngine.VCLegacyEventsTranslator") --> Microsoft.VisualStudio.Project.VisualC.VCProjectEngine.VCConfigurationMef
Resulting in: Cannot get export 'Microsoft.VisualStudio.Project.VisualC.VCProjectEngine.VCConfigurationMef.VCConfigurationShim (ContractName="Microsoft.VisualStudio.ProjectSystem.ConfiguredProject.HostObject")' from part 'Microsoft.VisualStudio.Project.VisualC.VCProjectEngine.VCConfigurationMef'.
Element: Microsoft.VisualStudio.Project.VisualC.VCProjectEngine.VCConfigurationMef.VCConfigurationShim (ContractName="Microsoft.VisualStudio.ProjectSystem.ConfiguredProject.HostObject") --> Microsoft.VisualStudio.Project.VisualC.VCProjectEngine.VCConfigurationMef

At the moment only Visual Studio 2012 is supported, so issues with Visual Studio 2013 are to be expected.
There is a thread on their forums dedicated to helping with WAF problems, which includes getting it up and running with Visual Studio 2013: http://www.cryengine.com/community/viewtopic.php?f=314&t=130850
The WAF documentation is here: http://docs.cryengine.com/display/SDKDOC4/Getting+Started+with+WAF
You will find help much more quickly on the CRYENGINE forums - few users habitually check Stack Overflow for these types of questions.

Related

error using miniDFSCluster on windows

I'm trying to write unit tests using miniDFSCluster and it's throwing the error below
java.lang.UnsatisfiedLinkError: org.apache.hadoop.io.nativeio.NativeIO$Windows.access0(Ljava/lang/String;I)Z
any pointers to resolve this issue?
With errors like this, I use three steps
Find out what it is looking for
In this case, *org.apache.hadoop.io.nativeio.NativeIO$Windows.access0*
Find out what jar/lib it is in.
I don't use the Windows version, but I believe it is in hadoop.dll -
you'll have to check this.
Find out where I'm telling it to use that jar/lib
Update: See also this Answer.
I was able to resolve this error by following these steps:
Download hadoop.dll and winutils.exe in the same version that I'm using in the sbt/maven configuration, you can find these files in all versions of hadoop here: link
Put these 2 files in your %hadoop directory%\bin folder
make sure that %hadoop directory%\bin is listed under PATH in your device's environmental path(if using windows)
then the code should work just fine.

vs10 C++ $(MyLibrary) vs %(MyLibrary)

We are using an environment variable to specify a path to a library we use. Most of the time it points to the released version but sometimes to a development version.
Anyway, it works ok when I use $(MyLib)/path;%(AdditionalIncludeDirectories) for building the C++ application but I can not open the project resources. However, when I use %(MyLib)/path;%(AdditionalIncludeDirectories) it works.
Now, what is the difference?
I thought the correct way is to use $(EnvVar) but for the resource editor it doesn't seems to work. And if $(EnvVar) is the correct way then why does Visual Studio use %(AdditionalIncludeDirectories) and not $(AdditionalIncludeDirectories)
The error I get is: fatal error RC1015: cannot open include file 'afxres.h'.
You use %(item) to refer to an MSBuild metadata item. Using $(AdditionalIncludeDirectories) would not work well if you also had an environment variable by that name. So %(MyLib)/path ought to resolve to just /path.
You can put echo %(MyLib)/path in a prebuild event to verify this.
Which is probably enough to stop confusing rc.exe, the resource compiler. Which is a stone-cold-old SDK utility, going back all the way to Windows version 1.0. It is pretty temperamental, very picky about command line options and .rc script file text encoding. Do keep in mind that it dates from an era long before Windows started to support a forward slash as a path separator, everybody had to use a backslash back in 1986.
So use "$(MyLib)\path" instead, including the double quotes so you don't confuzzle it when MyLib contains embedded spaces. And do favor using a project property sheet instead so there are some odds that somebody can still figure out how to get the project built correctly 2+ years from now.

ClCompile and Emscripten

I had a error with a basic hello world from a set of examples from Emscripten/tests/msvc10
I have a error MSB4096 but i don't find the solution of the problem on visual Studio 2012.
C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V110\Microsoft.CppBuild.targets(817,5): error MSB4096: The item "..\hello_world.c" in item list "ClCompile" does not define a value for metadata "ProgramDataBaseFileName". In order to use this metadata, either qualify it by specifying %(ClCompile.ProgramDataBaseFileName), or ensure that all items in this list define a value for this metadata.
Do you know the reason?
thanks
When trying to compile keep in mind 2 things:
Do no try to compile managed C++ code with emscripten.
the code is running in browser sandbox
The metadata stuff in your code seems really related to the first issue (managed code).
You have to set the 'Program Database File Name' (ProgramDataBaseFileName) Property in the VS C/C++ Options of your Project e.g. to '$(IntDir)$(TargetName).pdb'
ProgramDataBaseFileName exposes the functionality of the compiler's /Fd (Program Database File Name) option.
MSDN ProgramDataBaseFileName

C++ Error on compile

I am developing a firewall application which is complete for Windows XP.
To accomplish this, I am creating a dll file, which can be used in C# file.
For Vista or later, I used this code, but it's not compiling. I have win sdk 2008 and it is showing this error:
Error 19 error LNK2019: unresolved external symbol _FwpmEngineOpen0#20 referenced in function "private: unsigned long __thiscall PacketFilter::CreateDeleteInterface(bool)" (?CreateDeleteInterface#PacketFilter##AAEK_N#Z) PacketFilter.obj FirewallVista ".
It must be some project property setting problem because I know all lib files are imported correctly.
It seems like you're trying to compile the simple WFP project from codeproject. The guys above probably didn't understand the questions but the answer was:
find the first function linker fails at and find it on MSDN, eg. FwpmEngineOpen0 and find which library it needs to link to and add it to the project properties / Linker / Input / Additional Dependencies
Actually in the sample, there was another function failing to link UuidCreate
Long story short:
Create a plain Win32 console application (I did it with VS2012) and build it - make sure it works
Add the header file to the project (PacketFilter.h) to the project
Replace the main source file with (PacketFilter.cpp) contents, but don't delete the include for "stdafx.h" on the top of the file
Add the following libraries into the linker section (as per above)
Fwpuclnt.lib
Rpcrt4.lib
Build and run the application (you might need to change the character set to multi-byte too).
You'll have to modify the IP address in the source to make the sample work. I picked a local IP address and did
ping -n 100 192.168.100.200
See the ping returning, start the exe, and see ping failing to reach destination (timing out) - eg. firewall is working. Then press any key to stop firewall and see ping reaching destination again.
I would've posted the link to the codeproject page, but as I have less than 10 credit - I can't :-P
Google for: "Firewall using Vista's Windows Filtering Platform APIs"
Hope this helps anyone who tries to build this sample.
You are missing a library reference. Check that you have imported the .lib that your code is expecting.
EDIT: The missing import is from the library you're talking about itself. That probably indicates you forgot to import the .lib of that actual library, or you need to attach the .cpp files from that project into your own project. In other words, you need more than the headers.
Also, if you're working from .NET, consider using the plain Vista Firewall API because it is already exposed as a COM coclass, which .NET can talk with natively.
Right click on your project name in Solution explorer, select Properties. Then open Linker -> Input. Open the dropdown next to Additional Dependencies select <Edit>. Then type the following in the top textbox:
%(AdditionalDependencies)
$(DDK_LIB_PATH)\NTOSKrnl.lib
$(DDK_LIB_PATH)\FwpKClnt.lib
$(DDK_LIB_PATH)\NetIO.lib
$(DDK_LIB_PATH)\NDIS.lib
$(DDK_LIB_PATH)\WDMSec.lib
$(SDK_LIB_PATH)\UUID.lib

VC2008 compiler errors opening sbr files (C2418 C1903 C2471)

EDIT: See my answer below for the hotfix.
ORIGINAL QUESTION:
In setting up for our boat-programming adventure I have to set up source control and fix project files for a team to use them. (the project was previously only being worked on by one person who took shortcuts with setting up the project includes, etc)
I am fixing those SLN and Proj files. When trying to do a build on an external USB drive (I have not tried it on the primary hard drive) I am getting odd errors (lots of them for various files):
fatal error C1083: Cannot open
compiler generated file:
'.\Debug\.sbr': Permission
denied
These files are referenced in the vcproj file with relative paths in double quotes:
RelativePath="..\..\Source\.cpp"
I get the same errors form within a sln file in the IDE or if I call msbuild with the sln file.
The files are kind of "shared" for a few sln files (projects).
The person who originally created the SLN files is not known for being a wizard at configuring MSDev or making things work for teams.
Is this an issue with the way the source files are referenced? Any suggestions on how to fix these?
This URL does not seem to have helpful information:
Fatal Error C1083 on MSDN
Note - there were/are still hardcoded paths in the proj file, but i don;t see them for these files. They were mostly for the include and lib dirs. I think I removed them all.
I also get these errors:
..\..\Source\.cpp : error C2471:
cannot update program database '\debug\vc90.pdb'
..\..\Source\.cpp(336) : fatal
error C1903: unable to recover from
previous error(s); stopping
compilation
..\..\Source\.cpp(336) : error
C2418: cannot delete browser file:
.\Debug\.sbr
Title: You may receive a "PRJ0008" or "C2471" or "C1083" or "D8022" or "LNK1103" or similar error message when you try to build a solution in Visual C++
Symptoms:
D8022 : Cannot open 'RSP00000215921192.rsp'
PRJ0008 : Could not delete file 'vc90.idb'.
C1083 : Cannot open program database file 'vc90.pdb'
C2471 : Cannot update program database 'vc90.pdb'
LNK1103 : debugging information corrupt.
Cause:
This problem occurs when all of the following conditions are true:
You have a solution with more than one project in it.
Two or more of the projects are not dependent on each other.
You have parallel builds enabled. (Tools -> Options: Projects and Solutions, Build and Run: "maximum number of parallel project builds" is set to a value greater than 1)
You are building on a system with multiple CPUs (cores).
Two or more of the non-dependent projects are configured to use the same Intermediate and/or Output directory.
A specific race condition in mspdbsrv.exe remains uncorrected.
Resolution:
To resolve the problem do one or more of the following:
Reconfigure the non-dependent projects to specify an Intermediate and Output directory that is different from one another, e.g. Output Directory = "$(SolutionDir)$(ProjectName)\$(ConfigurationName)", Intermediate Directory = "$(OutDir)".
Adjust your solution's project dependencies (Project -> Project Dependencies...) so that each is dependent on another.
Disable parallel builds.
Add the "/onecpu" boot option to your boot.ini file.
Change you BIOS settings to enable/use only one CPU.
File a problem report with Microsoft Technical Support and keep bugging the crap out of them until they eventually fix mspdbsrv.
Status:
The problem is a combination of both a user project configuration error as well as a race condition in Microsoft's "mspdbsrv.exe" utility that does not properly handle more than one thread calling it at the same time for the same file resulting in the file's HANDLE being left open.
Additionally Visual Studio itself and/or its build system (VCBUILD and/or MSBUILD) (or all three!) should be made smart enough to detect and alert the user of such user errors so that corrective action can be taken.
This problem has been around for a LOOOOOONG time.
Applies to:
Microsoft Visual C++ 2005
Microsoft Visual C++ 2008
Others?
Respectfully submitted:
"Fish" (David B. Trout)
fish#infidels.org
p.s:
You're welcome. :)
Hmmm.
Perhaps:
http://social.msdn.microsoft.com/Forums/en-US/vclanguage/thread/0ceac3c6-62f6-4fdf-82e1-d41e1b4fcd20/
there is a hotfix from MS
http://code.msdn.microsoft.com/KB946040
http://support.microsoft.com/kb/946040
That might be my problem. I think it might only be on one machine I have.
EDIT:
I downloaded and ran the hotfix installer. It seems to have fixed it.
I get this same error when I physically remove a file from disk, but leave it in VS. In VS2005 it would give a much better : fatal error file not found. I think this is a bug in VS2008. The hotfix mentioned above didn't help me.
In my case it was my virus package (Trend Micro) causing all the problems. I added my Dev folders to the Ignore/White lists to solve the problem
delete your debug folder and build your project agian.
Occastionally my Visual Studio will suddenly decide something like this. I have found it maybe help to toggle to release, do a full rebuild, then toggle back to debug.