I'm trying to write a basic static class to Trigonometry utility in c++ for Cinder.
This is my main file:
#include "cinder/app/App.h"
#include "cinder/app/RendererGl.h"
#include "cinder/gl/gl.h"
//#include "MyStaticClass.h" //this simple include doesn't work...
#include "C:\Users\ALEX\Cinder Projects\LearnLinkage\vc2013\MyStaticClass.h"// so I have to use this stupid absolut path...
using namespace ci;
using namespace ci::app;
using namespace std;
class LearnLinkageApp : public App {
public:
void mouseDown( MouseEvent event ) override;
};
void LearnLinkageApp::mouseDown( MouseEvent event )
{
MyStaticClass::MyStaticFunction();
}
CINDER_APP( LearnLinkageApp, RendererGl )
This is my static class file :
MyStaticClass.h
#pragma once
static class MyStaticClass
{
public:
MyStaticClass();
~MyStaticClass();
static void MyStaticFunction();
};
MyStaticClass.cpp
#include "MyStaticClass.h"
MyStaticClass::MyStaticClass()
{
}
MyStaticClass::~MyStaticClass()
{
}
static void MyStaticFunction(){
}
I've got this message error : Error 4 error LNK2019: unresolved external symbol "public: static void __cdecl MyStaticClass::MyStaticFunction(void)" (?MyStaticFunction@MyStaticClass@@SAXXZ) referenced in function "public: virtual void __thiscall LearnLinkageApp::mouseDown(class cinder::app::MouseEvent)" (?mouseDown@LearnLinkageApp@@UAEXVMouseEvent@app@cinder@@@Z) C:\Users\ALEX\Cinder Projects\LearnLinkage\vc2013\LearnLinkageApp.obj LearnLinkage
I made some researches about this https://en.wikipedia.org/wiki/Translation_unit_%28programming%29 and this https://en.wikipedia.org/wiki/One_Definition_Rule
the problem seems to be a static function get unresolved external symbol , can you tell me more about this ? and is it theorically possible to call a static function inside a virtual function in cpp ??
Thanks for your support