Stanford Engineering Everywhere CS106B Library - visual-c++

I am currently a C# programmer and have been interested in learning more about C++ and data structures. I found the CS106B class offered free online through the Stanford Engineering Everywhere program which seems like it would be a good fit.
I've tried to install the library files they use for the class and keep getting a message that I have to have visual studio 2005 installed for the setup file to run. I don't have 2005, but I've tried the express editions of both vc++ 2008 and vc++2005. Is there any way around this that I can get the proper files installed?
The zip file containing the libraries came with two files, an exe and an msi.

Just got it to work by using some information I found here: http://www.functionx.com/visualc/libraries/staticlib.htm
I'm using Visual C++ 2008 Express. Here's how I did it:
Download the PC Starter Code ZIP file for Assignment 1 from the
current semester's CS106B class website.
http://www.stanford.edu/class/cs106b/ In that file you'll find a
folder named "StanfordCPPLib". In that folder, you'll need the
StanfordCPPLib.lib and the *.h files you want to include.
In Visual Studio, create a new project (File -> New -> Project). Select a Win32
Console Application, choose a name, and click Next.
When the Application Wizard pops up, click Next (not Finish). In the
Application Settings, check the box marked "Empty Project". Click
Finish.
In the Solution Explorer, right click on the Source folder and
create a new .cpp file. (Add -> New Item -> Code -> C++ File)
Find your new project's folder in Windows Explorer. In that folder,
you should be able to find your new .cpp file you just created.
Paste the StanfordCPPLib.lib and your needed *.h files you
downloaded earlier into the same folder that contains your new .cpp file.
Finally, you need to add the library to our new project. In Visual Studio, using
the main menu, click Project -> Add Existing Item. The dialog should
default to your project's folder where you just pasted
StanfordCPPLib.lib. Select StanfordCPPLib.lib and click Add.
You should now be able to add an #include "example.h" for whatever .h files you copied into your project folder.
Note: Since you'll be using a newer version of Stanford's custom library, there may be some small differences between the original handouts and the new library. For instance, when using #include "simpio.h", the handouts list a function called GetLine(). In the new library, that function is capitalized differently: getLine(). Make sure you check the header files for correct syntax/usage.

Thanks to Dani, with his help, I succeed in installing the library on vs2008(both express and professinal are OK) on win7. With Dani's help,
I have finished the first three assignments in cs106X(winter2010) - life, ADT, boggle - so far.
I'm just a undergraduate in China, thanks so much to the great education of stanford and power of internet.
http://abloggingattempt.blogspot.com/2010/05/stanford-cs106-lib-and-vs2008-express.html
the following are copied mainly from Dani's blog.
Stanford CS106 Lib and VS2008 Express
The CS106B is a great CS Stanford course available online (iTunes e.g.) in video and for free. All assignments and the course itself use an in-house developed library (not sure if it has a name, cslib, cs106 lib, dunno) available in all of the assignment zips as well as installable with the Xcode/VS2005 wizard installs. The problem - the VS custom wizard will install on VS2005 only (could be that a newer version exists but I couldn't find one). So how to port the VS wizard to VS2008 Express(professional)?
- I got the 2005 custom wizard setup, PCLibs-VS2005-ADT-Installer.zip and used a small tool , the LessMSIerables(Universal Extractor also works well) in order to extract the contents of the msi file. The msi contains four folders with all the stuff needed to create a new custom wizard. So, the tool extracted the following:
SourceDir
|- Includes Folder
|- Library Folder
|- Project Folder
|- Wizard Folder
Now some copying:
The CS106CPPInc folder inside the 'Includes Folder' goes to
C:\Program Files\Microsoft Visual Studio 9.0\VC\include (as a subfolder!)
'Library Folder'\CS106CPPLib.lib goes to
C:\Program Files\Microsoft Visual Studio 9.0\VC\lib
'Wizard Folder\AppWiz\CS106 Assignment Wizard' to
C:\Program Files\Microsoft Visual Studio 9.0\VC\VCWizards\AppWiz
(meaning CS106... should appear as a sub-folder of AppWiz)
The three files in 'Project Folder' will go into
C:\Program Files\Microsoft Visual Studio 9.0\VC\Express\VCProjects\Stanford. One of those three files, the CS106 Assignment Wizard.vsz, needs to be edited (a text file) and its second line should become:
Wizard=VsWizard.VsWizardEngine.9.0

Was having the same problem. I found both the .h and the .c files online.
You can find them here:
http://www.ime.usp.br/~pf/Roberts/C-library/standard/cslib/

I suggest to go to the CS106B page directly:
http://www.stanford.edu/class/cs106b/
And grab newest assignments. They are compatible with VS 2008.
The assignment material from SEE is outdated (VS 2005). The assignments are not discussed in the video, so you won't miss anything by doing that.
Just download from the CS106B page and open in VS 2008, that will work!

Reading through handout 5P makes it seem like the installer will expect the file structure VS2005 will create - especially this sentence: "Run (and quit) Visual Studio (you can go ahead and register your copy if it asks you). It is important that you have done this at least once before proceeding to the next step."
Try creating a folder structure like: (under "My Documents") "Visual Studio 2005\Projects" and see if setup.exe will work.

I am using visual studio express, and all I did was to just unzip the files it works fine.. here I have done the CS106B assignment with also the full zip'd up files of that assignment as well, all I did was to uncompress the assignment from the cs106b website and open up the sln (solution) file within visual studio express.

There is no c++ library available for cs106b in unix system. I hope they publish the library in source.

Related

"Shallow Folder Structure" InstallShield Option in Visual Studio 2012

I am building a setup project using InstallShield Limited Edition in Visual Studio 2012. The setup build requires some merge modules that ultimately result in a long path name for the build. I am currently using ISProjectFolder as my Release Location, which resolves to the top-level folder in the setup project. Here is an example of one of the errors I am getting:
Error 1 -6307: Unable to extract one or more files to
'C:\Users\UserName\Documents\Visual Studio
2012\Projects\MyProject\MyProjectSetup\Express\Interm\MergeModules\policy_9_0_Microsoft_VC90_CRT_x86.644DE414_7746_31B5_908B_E938B4078584'.
The file path is longer than the limit set by the operating system.
Change the build location of the current release to a shorter path to
resolve this issue. ISEXP : error : -6307: Unable to extract one or
more files to 'C:\Users\UserName\Documents\Visual Studio
2012\Projects\MyProject\MyProjectSetup\Express\Interm\MergeModules\policy_9_0_Microsoft_VC90_CRT_x86.644DE414_7746_31B5_908B_E938B4078584'.
The file path is longer than the limit set by the operating system.
Change the build location of the current release to a shorter path to
resolve this issue.
This is occurring because, as the error states, the file path for the build is too long. As I stated above, I am using the InstallShield Limited Edition that comes with Visual Studio 2012. I have read in various online forums that it helps to change the Build option to "Shallow Folder Structure," but I cannot find this option in InstallShield Limited Edition that comes with Visual Studio 2012. I believe it should be on the Build Tab of the Releases page, but I do not see it there:
I can workaround this problem by explicitly setting the build location to a shorter path, such as my Desktop, but this is not an elegant solution as I would prefer to keep the build output within my setup project folder. Any help would be appreciated.
This looks old but I case someone stumbled upon this issue I have a workaround without moving the files. All you need is to map your project folder as a local drive.
So something like this
F:\Projects\Super Long Project Folder Path v2\Super Long
Project Form
Can be mapped using localhost like such
\localhost\F$\Projects\Super Long Project Folder Path v2\Super Long
Project Form
Will be come like this
Z:\
Now open your project in that mapped drive rather than from the long location path

VS 2012 takes System.Net.Http.dll from framework and NOT the NuGet version when referencing?

I'm using the Microsoft ASP.NET Web API in Visual Studio 2012 Windows 7 desktop app. I downloaded them from Nuget on 25th Jan 2013.
I'm manually referencing the DLLs in a project, however when adding a reference to the two files: System.Net.Http.dll and System.Net.Http.WebRequest.dll, visual studio seems to override this and take them from the folder C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4.5\System.Net.Http.dll and not the folder I specified C:\MyFolder\System.Net.Http.dll ?
I know this because I look at the Path in the Properties page for the files. All the other files work OK. This bothers me, because they are completely different file sizes, etc.
Why is this hapenning?
As a work-around, I suppose I can set the 'Copy Local' property to 'True' (it looks like the files are then copied from the .NET 4.5 Framework folder into my executable's output folder), and then I can manually copy-replace them with the new ones from nuget, but this seems very long winded and still leaves me puzzled as to why I need to do this?
Can anyone assist?
The System.Net.Http assembly (and some others) are strongly named, meaning VS will always load it from GAC as long as it has the same version number as the reference.
You can read more about the binding process here: http://msdn.microsoft.com/en-us/library/yx7xezcf.aspx

Where's per-project TargetPlatformVersion?

I have a Visual Studio 2012 solution with a Windows Phone 8 C# project and a Windows Phone 8 C++ library. I've moved it to a different computer. Now, when I try to open the solution, the library project fails to load with the following message in the console:
MyLib.vcxproj : error : Unable to read the project file "MyLib.vcxproj".
MyLib.vcxproj(620,3): The imported project "C:\Program Files (x86)\MSBuild\Microsoft\WindowsPhone\v7.0\Microsoft.Cpp.WindowsPhone.7.0.targets" was not found. Confirm that the path in the <Import> declaration is correct, and that the file exists on disk.
When I look into the project file, I find the following on line 620:
<Import Project="$(MSBuildExtensionsPath)\Microsoft\WindowsPhone\v$(TargetPlatformVersion)\Microsoft.Cpp.WindowsPhone.$(TargetPlatformVersion).targets" />
So it looks like the value of environment variable TargetPlatformVersion is somehow off.
Then I've created another solution on this machine, also C#/C++ combo. That one opens and compiles and runs, nae problemo. Looking at the project file in the newly created library, it has an identical <Import> line near the end.
Now, the solution copying might have been not perfect. I did not copy all files - just what I thought were the relevant ones - the .sln, the .vcxproj., but not the .sdf and not the .suo.
It looks like something was missing - a file that defined the value of TargetPlatformVersion on solution or project level was not copied, and now Visual Studio is picking a wrong default. Needless to say, WP7.0 has nothing to do with it, it's all WP8.
Any idea where could this setting reside? There's no mention of TargetPlatformVersion in neither project nor solution.
It went away on its own after a few reopens and other meaningless actions. Ooky, spooky stuff. No idea why. SVN does not detect any changes to project files.
I had this problem too, and the solution was to install the latest SDK for Windows Phone (SDK V8.0 at this time) in the computer (apparently it had a previous version version or not at all installed).
Step1: Replace every occurrence of $(MSBuildExtensionsPath) to 8.0 in your .vcxproj file
Step2: Restart Visual Studio
->Then You will get the error "The builds tools for v120 (Platform Toolset = 'v120') cannot be found"
To fix this:
if you are using visual 2012 right click on project name -> properties -> configuration properties -> general -> platform toolset -> Visual Studio 2012 (v110) or wp-v110
And You will be good to go!
Note: You can then revert the changes from 8.0 to $(MSBuildExtensionsPath) in your project file if you want. (The cause of the error is when you open a vs2012 project or its dependencies in vs2013)

Getting others to use my apps with Visual C++

I am learning how to build games in Visual C++ and when I upload them so friends can check them out, they all end up with messages saying it can not run. I did some research and found that it is because I am compiling against a Dynamic library instead of a static library. Correct me if I am wrong anywhere please. Upon further research, I found that a lot of people do not advise going this direction but instead include the files needed by my game.
How would I go about distributing my games to friends and make it real easy for them to just open up my .exe and play the game?
If you link to any DLLs, you also need to ship those along. If you produce a single .exe in your output, you probably need your friends to install the MS Visual Studio redistributable package for your version of visual studio. This is an example link for the VS 2010 one, but the one you give your friends should match your version.
There are essentially two options: Keep everything as-is and provide them with the runtime files (also named Microsoft Visual C++ * Redistributable Package or similar; the * has to be replaced with your version, e.g. 2005, 2008 or 2010). Downloads can be found on Microsoft's download site as well as in your Visual Studio installation folder (look for a folder called "Redist").
Alternative solution: In your project settings you're able to select the runtime environment (under linker options). Change your release build to use "Multithreaded" instead of "Multithreaded-DLL".

Get intellisense data for uncompiled projects

I inherited a project setup from a previous programmer. He used to develop for linux, but instead of coding directly in ubuntu, he shared the drives with samba and used Visual Studio to edit the files.
Now I can't compile this project in Visual Studio directly obviously, so I can't get data for intellisense and such. Would it be possible to associate symbols without compiling?
I know that what I ask seems counter intuitive, but Vim plugin OmniCPP does not come with a compiler and yet, is able to provide code completition up to a certain degree.
The commercial addin Visual Assist X can help. How well it helps is dependent upon how much information it can get from the project (if one exists): things like source files, header files and include directories. If no project is being used, you can create a dummy project just as a container to associate source and header files (not for compiling).

Resources