I have a Visual C++ solution with 2 projects AlgorithmA & AlgorithmB and both share a common header file RunAlgo.h with the class declaration. Each project in the solution has its own unique implementation for the header file.
I am trying to compile a DLL out of the common header file RunAlgo.h and add reference to this DLL in the projects AlgorithmA & AlgorithmB. I have then included separate RunAlgo.cpp definition file in both my projects. The problem is that I am getting linker errors while compiling the new DLL project which has only the header file.
So, the question is
- Can a header file with only class declaration be compiled into a DLL (Similar to class library containing an Interface in C#)?
- For the above scenario, is there a better approach to reuse the common Header file among projects?
- Should the above method work (re-check my code?)
1 & 3: No, that doesn’t make sense in C++.
Libraries (dynamic or otherwise) are only used during linking. During compilation declarations must be visible to the compiler in source-code form. This is why, for example, you have to explicitly #include standard library headers in addition to linking against the standard library.
2: What you’re already doing is basically the only solution. Put the common header files in their own directory, and add that directory to the include path of each of the two projects.