Search code examples
c++visual-c++linkerstatic-linking

Linking failure within solution


EDIT: I know there are similar questions, but I cannot find an answer to a following issue: Why the methods inside the class are working correctly and outside are not.

I've got a weird problem in my project which I'm developing in MSVC++ 2012. My project consists of different modules of code. The important modules from the problem's point of view is a library and the GUI. They exist as different projects in the same solution. I have some methods in the library which are part of the classes (in this case Calibration3D):

void Calibration3D::load(const std::string &path)

I use it without problems when I need it in the GUI, however I need to use a following method (outside the class):

void xxxyyy() 

But when I'm trying to use that function (outside the class but in the same namespace) I get a following error:

1>project_xml.obj : error LNK2001: unresolved external symbol "void __cdecl   cci::xxxyyy(void)" (?xxxyyy@cci@@YAXXZ) 1>D:\praca_pw\cci\build-msvc2012\x64\Release\\ccigui.exe : fatal error LNK1120: 1 unresolved externals

Anybody knows how to solve it?


Solution

  • When I have a header file like this:

    namespace xyz {
      void foo();
      class bar { ... };
    }
    

    then I write the cpp file like this:

    #include "xyz.h"
    namespace xyz {
      void foo() { ... }
      bar::bar() { ... }
    }
    

    This means I have to type a lot less and make fewer mistakes with regard to namespaces.