Back to the table of contents

Previous      Next

Building on Windows

  1. Install Microsoft Visual C++ 2013 Express Edition. (Sorry, earlier versions are no longer supported.)
  2. File->Open->Project/Solution
  3. Open waffles/src/waffles.sln
  4. Build (F7)
  5. Set the startup app to the app you want to try.
  6. Set any relevant arguments in Project->Properties->Debugging->Command Arguments
  7. Run it (F5)

  8. If you also want to try the demo apps:

  9. Open waffles\demos\demos.sln in Visual C++.
  10. Build (F7).
  11. Set the startup app to the app you want to try.
  12. Run it (F5).


Where did all the demo apps go?
They are still in the demos folder, but the demos.sln file no longer includes the demos that have dependencies on external libraries. If you want to build the other demos, you will have to build each of them separately. Unfortunately, we are not aware of any simple mechanism for resolving dependencies in Windows. In previous versions of Waffles, we solved this problem by including binary versions of those libraries with Waffles. However, this is a bad practice. It promotes the use of outdated libraries, bloats our distribution package, complicates deep debugging by making users hunt down the corresponding source code, etc. So, now you have to take care of dependencies yourself. For example, if your linker reports an error message, such as "error LNK1181: cannot open input file 'somelibrary.lib'", use your favorite search engine to find and install that library. Then, right-click on the project in the Solution Explorer, click Properties, Linker, Input, and examine the list of libraries in "Additional dependencies". Make sure it correctly refers to the library you just installed. Also, examine "Linker->General->Additional Library Directories", and make sure the path to that library is included in the list.

When I run one of the apps, a black window appears for just a split second, then disappears, and nothing else happens.
Most of these apps are command-line applications that are meant to be run in a terminal or command shell. They do not open up a graphical interface for you. If you do not supply any arguments, then they will just print the usage information for the application (which is what you are seeing for a split-second in that black window), and then terminate. If this is confusing to you, then you might want to learn about using the command shell.

When I link the GClasses library to my project, I get a bunch of linker errors saying msvcrt.lib and libcmt.lib are fighting with each other.
On Windows, the GClasses library is built with the static runtime libraries to reduce dll-hell. If you try to link it with your code, and your code uses the dynamic runtime libraries, you will get linker errors. The solution is to rebuild GClasses with dynamic runtime libraries, or rebuild your app with static runtime libraries. You can't mix static and dynamic libraries on Windows. If that doesn't help, you need to be careful to make sure that you build all of your libraries with the same settings. To do this, open your solution in VC++. In the Solution Explorer, right-click on GClasses, then click "Properties". Check the following settings, and make sure that they match the settings for your libraries and project: Configuration Properties->General->Use of MFC, Configuration Properties->C/C++->Code Generation->Basic Runtime Checks, and Configuration Propterties->C/C++->Code Generation->Runtime Library. If those all match and you still have problems, try use a diffing program to examine everything that differs between the GClasses.vcxproj file and the .vcxproj files for your program.

How do I install Waffles?
There is no install process for Windows. Just manually copy the executables that you use into some folder in your environment's path.

Where can I get more specific help?
You can ask a question at our forum. If you post a question and you do not get a speedy response, please email me. Sometimes the email that is supposed to notify me that there is a new forum post is incorrectly classified as spam and discarded. My email address is on the main page.

Previous      Next

Back to the table of contents