endianness.cpp
#include "endianness.h"
#include <cstdint>
 using namespace io;
 void switch_endianness(uint16_t* n)
 {
     *n = (*n >> 8) | (*n << 8);
 }
 void switch_endianness(uint32_t* n)
 {
     ...
 }
 void switch_endianness(uint64_t* n)
 {
     ...
 }
endianness.h
#ifndef ENDIANNESS_H
#define ENDIANNESS_H
#include <cstdint>
namespace io
{
    void switch_endianness(uint16_t* n);
    void switch_endianness(uint32_t* n);
    void switch_endianness(uint64_t* n);
}
#endif
Trying to test out my switch_endianness function in app.cpp, I get an unresolved symbol error:
LNK2019 unresolved external symbol "void __cdecl io::switch_endianness(unsigned short *)" (?switch_endianness@io@@YAXPEAG@Z) referenced in function main
app.cpp
#ifndef TEST_BUILD
#include <iostream>
#include "io/endianness.h"
int main(int argn, char** argv)
{
    std::uint16_t y = 0x0000;
    io::switch_endianness(&y);
    std::cout << y;
}
#endif
How I understand and read thus far, its a linking/reference problem. I think my code is fine and should compile and run as intended, I did 'include in project' to my endianness files, perhaps there is something trivial I'm missing or doing wrong with referencing? I really can't seem to solve this.
 
    