Monday 16 October 2017

c++ - LNK2019: unresolved external symbol in VS unit-testing

I get the error as stated in the title. I ensured the
following:
- The Include directory, include library and additional include
directory are set correctly
- In the properties, Subsystem is set to CONSOLE



Comments to my code:
LifeLib is a
project that contains classes of that I want to test some methods. The classes are
defined in namespace LifeLib. One of them is StornoTafel. testVariables is NOT defined
in any namespace.
I get the linking error 3 times, for 2 constructors and 1
method in StornoTafel (noted in the
code).



//project
Tester

#include "stdafx.h"
#include
"CppUnitTest.h"

#include
"../LifeLib/StornoTafel.h"
#include
"../LifeLib/testVariables.h"

using namespace
Microsoft::VisualStudio::CppUnitTestFramework;

namespace
Tester
{

TEST_CLASS(AggSelTest)
{

public:
LifeLib::StornoTafel stornoTafel_; // LNK2019

LifeLib::StornoTafel *stornoTafel_; // no error, but I need an instance and not a
reference to proceed -> see init method
LifeLib::testVariables test_vars_;
// everything is fine

TEST_METHOD_INITIALIZE(init) {

stornoTafel_ = StornoTafel(test_vars_.lapseProb); // when this line is commented out I
only get the first error (see below)
}


}
}

// testVariables.h
#pragma
once
#include
#include


class testVariables
{
public:

testVariables() {};
// here are a
lot of vectors with values for testing purposes
std::vector
_lapseProb= {0,1,2}; // [...]
};

//
StornoTafel.h
#pragma once
#include
"masterheader.h"

namespace LifeLib {

class
StornoTafel {
public:

StornoTafel();
//LNK2019
StornoTafel(std::vector ProbabilityOfLapseInYearT);
//LNK2019

StornoTafel(const StornoTafel &obj); //no
error

StornoTafel operator=(StornoTafel const& rhs);
//LNK2019


//! \name Getter
//@{

const std::vector& Stornowahrscheinlichkeit() const;

//@}
protected:
std::vector
Stornowahrscheinlichkeit_;
};
inline const
std::vector& StornoTafel::Stornowahrscheinlichkeit() const
{
return Stornowahrscheinlichkeit_;

}

}

//StornoTafel.cpp
#include
"StornoTafel.h"

LifeLib::StornoTafel::StornoTafel()
{
}

LifeLib::StornoTafel::StornoTafel(std::vector
ProbabilityOfLapseInYearT) {
Stornowahrscheinlichkeit_ =
ProbabilityOfLapseInYearT;

}

LifeLib::StornoTafel::StornoTafel(const
StornoTafel &obj) {
Stornowahrscheinlichkeit_ =
obj.Stornowahrscheinlichkeit_;
}

LifeLib::StornoTafel
LifeLib::StornoTafel::operator=(StornoTafel const& rhs) {

Stornowahrscheinlichkeit_ = rhs.Stornowahrscheinlichkeit_;
return
*this;
}


//masterheader.h
#pragma
once
#include
#include

#include
#include


#include
#include




errors
in detail:






  1. LNK2019 unresolved external symbol "public:
    __cdecl
    LifeLib::StornoTafel::StornoTafel(void)"

    (??0StornoTafel@LifeLib@@QEAA@XZ) referenced in function "public:
    __cdecl
    AggSelTester::AggSelTest::AggSelTest(void)"
    (??0AggSelTest@AggSelTester@@QEAA@XZ)


  2. LNK2019
    unresolved external
    symbol "public: __cdecl
    LifeLib::StornoTafel::StornoTafel(class
    std::vector >)"

    (??0StornoTafel@LifeLib@@QEAA@V?$vector@NV?$allocator@N@std@@@std@@@Z)

    referenced in function "public: void __cdecl

    AggSelTester::AggSelTest::init(void)"

    (?init@AggSelTest@AggSelTester@@QEAAXXZ)

  3. LNK2019
    unresolved external
    symbol "public: class LifeLib::StornoTafel
    __cdecl
    LifeLib::StornoTafel::operator=(class LifeLib::StornoTafel const
    &)"

    (??4StornoTafel@LifeLib@@QEAA?AV01@AEBV01@@Z) referenced
    in function
    "public: void __cdecl
    AggSelTester::AggSelTest::init(void)"

    (?init@AggSelTest@AggSelTester@@QEAAXXZ)





Why do they
arise?

No comments:

Post a Comment

php - file_get_contents shows unexpected output while reading a file

I want to output an inline jpg image as a base64 encoded string, however when I do this : $contents = file_get_contents($filename); print &q...