Is it possible to override an include file from a project dependency - c++

I have a project that uses includes from other projects. This works fine, however one of the includes references a file that I would like to somehow overwrite.
Is this possible? If I include a file with the same name in my project will that somehow overwrite it on compilation? Unfortunately I don't have write access to that file, so I need to find a work around and substitute my own file. This is with Visual Studio 2017.

Put your header file directory to beggining of your include search path "Additional Include Directories". So compiler will find your header file first.

Related

#include <winsqlite/winsqlite3.h> works in one project, not another

From Visual Studio 2017 I created a console application to test Sqlite. The first line I put in my main file was
#include <winsqlite/winsqlite3.h>
This caused no problem (the location was found). But I tried adding this include to a source file I had obtained by migrating a legacy project to VC++ 2017. This time the include line causes an error.
I suspect I should look at
$(VC_IncludePath);$(WindowsSDK_IncludePath);
however, I do not know how I can find out what's in the macros VC_IncludePath and WindowsSDK_IncludePath, let alone change them.
Could there be any other explanation?
>>however, I do not know how I can find out what's in the macros VC_IncludePath and WindowsSDK_IncludePath, let alone change them.
In Visual Studio, open Project->Properties->VC++ Directories->Include Directories->edit->Macros, Then you can check the content of these Macros.
If you need to use a three-party library in Visual Studio, you generally need to add three places in the property page. I will show in the picture below.
include is the path of .h file and library is the path of .lib file, and you should also fill the name of .lib file in the third edit box(additional dependencies). In your case, this third-party library seems has only .h file, so just add the path of .h file to the first edit box. Or simply put the file directly in your project's root directory and add it to your project in Visual Studio, then include it.

Is it OK to make a stdfx.h file myself?

Now, I realized that I need a precompiled header for my project. However, at the beginning, I created my project as an empty project which doesn't have a stdfx.h header file. So, this is what I did:
- I created a header file name stdfx.h
- In that file, I included some libraries.
- I went to the project Property Pages -> C/C++ -> Precompiled header -> set the PRECOMILED HEADER option to Use (/Yu).
- Finally, I included stdfx.h in every cpp file.
It works. However, I am wondering if the stdfx.h file that I created myself works like the one that is automatically created by Visual Studio? I mean is it really a precompiled header which will save time when compiling or just a normal header file?
It's normally named stdafx.h, but it really doesn't matter. You can name your precompiled header whatever you want.
You are missing one final step.
You also need to create a stdafx.cpp. This is an empty file that only has a #include "stdafx.h" line.
For this particular file, right click on it in the Solution Explorer and select Properties. This will bring up a Properties page with settings specific to this source file (in inherits your project settings by default). For this particular file, select /Yc as the compiler option instead of /Yu for the Precompiled setting. If you don't do this, you may not observe the build speed improvements of precompiled headers.
When Visual Studio builds, it will build your stdafx.cpp file first. And along with that, it will build the .pch file that the other source files will pick up.
And while I'm here. The things to include in the precompiled header file are all the system and C/C++ runtime header files. (e.g. <windows.h>, <stdio.h>, <string>, <map>, etc...). You'll get the most gains by including all these files - since they never change from build to build.
You definitely can make stdfx.h by yourself or other precompiled header file (name is not really important). But you should follow some rules described in MSDN.
You can read more about precompiled headers in the Documentation

visual studio 2012 adding new header file

In Visual Studio 2012 (C++ environment), for a Win32 console application, I need to include a new header file to my project. I tried copying the files in the project's location but that is of no help. The file is iGraphics.h and it is shown in the header files list but does not compile. What should be the correct approach?
You should add the path to that header to the additional include directories under C/C++ in your project settings. Afterwards, just #include "iGraphics.h" where you need it.
Don't just move header files around, and don't add existing headers to your project for no good reason. This way, you can easily change versions by just specifying a different folder.
The easiest way to do this is:
Right click on the header file (to be included) in the Solution explorer.
General->"Excluded from the build"
Select "No" from the drop down list
Click "OK".
In VS2012, just using '"' instead of '<>' around the header file in include also works.
Put the file in the right place in the file system (like you did). Then right-click your project in the solution explorer and use Add > Existing Item to add it to your project.
If you don't want to move your file (which you probably should not), see Luchian's answer on how to add the include directory to the include folders.

include a file from seperate folder in c++

well, I am trying to include a header file in my project, while the header actually belongs to the other project in the same workspace.
I don't want to do something like
../../folder_name/header_file_name.
If it helps I am using VisualC++ 6.0.
Thanks!
1. Right-click on the project, and select Properties.
2. Select Configuration Properties->C/C++->General.
3. Set the path under Additional Include Directories.
For Visual C++ 6.0, go to Tools / Options / Directories / Show directories for: Include files, and then add the full path to the folder where your other header file resides.
Add the other folder as an Include Directory to your project, so that it's in the search path.
You may also need to add a Library Directory if this header has a corresponding object file.
You can tell to compiler a path to search header files.Look at your project configuration.
Look at to the first pict here: http://www.steptools.com/support/stdev_docs/help/settings_vc6.html

Unable to include header file in C++ console application project

I have been trying linking of a .lib file and also including a header file in my C++ console application project. I copied the C++ header file from one of my other projects, and pasted it under Header Files folder in console application project. Here's the screenshot to see: http://i.imgur.com/JFFIn.png
However, when I try to include the header in my code as #include..., I do not get an intellisense with my header file's name. (I only see targetver.h, stdafx.h and Debug folder)
I tried to point Add additional include directories in my C++ console application project properties to the Project folder itself, but that doesn't seem to help and the file still doesn't show up.
If I write the name of the header file as #include "DllTest.h", I get an error saying: Cannot open include file: 'DLLTest.h': No such file or directory c:\users\ht\documents\visual studio 2010\projects\dlltest\dlltestconsole\dlltestconsole.cpp
How is the header file included in here, so that it starts appearing? If I add a new item > Header File, name it to DLLTest.h and copy paste the header files content here, it just shows up normally. How will the header file which is copied - pasted into Header Files folder show up in the code?
In C++ projects, the things that look like folders in the Solution Explorer aren't actually folders, they are filters. They are UI-only entities that can be used to organize project items in the IDE. They do not in any way reflect the structure or location of items on disk, though. You can add a file from any location on disk to any filter in the solution.
The compiler knows nothing of these filters; it only knows about files as they exist on disk.
In your case, the files are not located in your project folder. You'll either need to:
copy your files into your project folder, then add them to the project from there (right-click on the solution then Add Existing Item), or
add the files from where they are, then add their location to the "Additional Include Directories" property in the project properties.
I do not know of any way to have the IDE automatically move files to the project directory when you copy and paste them into the project. The C++ project system is fundamentally different from the project system used for C# and VB.