I've been getting these LNK2019s for a little while now and can't seem to find a way to get rid of them. I'm aware that there are a lot of threads on these errors already, but I've yet to find anything that's helped me so hoped someone might miss something glaringly obvious I may have missed.
I've not learnt very traditionally, so sorry if my code's a bit messy.
main:
#include "eventLoop.h"
#include <time.h>
#include <iostream>
using namespace std;
bool buttonA, buttonB, buttonC, buttonD, buttonE, buttonF, buttonG = false;
bool KeepProgramOpen = true;
time_t timer;
time_t oldtime;
time_t dtime;
time_t looptime;
int rate;
char Note;
bool FirstLoop = true;
eventLoop MainEventLoop;
int main()
{
rate = 60;
looptime = 1000 / rate;
while(KeepProgramOpen==true)
{
time(&timer);
dtime = timer-oldtime;
if(dtime<looptime)
{
continue;
}
oldtime = timer;
MainEventLoop.FindFinalNote(buttonA, buttonB, buttonC, buttonD, buttonE, buttonF, buttonG, FirstLoop);
FirstLoop = false;
//Closing stuff goes here
}
}
eventLoop.h:
#pragma once
class eventLoop {
public:
void FindFinalNote(bool, bool, bool, bool, bool, bool, bool, bool);
protected:
};
eventLoop.cpp:
#include "eventLoop.h"
#include "MidiOutput.h"
#include "FileIO.h"
MidiOutput MidiOutputX;
FileIO fileioX;
void eventLoop::FindFinalNote(bool A, bool B, bool C, bool D, bool E, bool F, bool G, bool firstloop)
{
if(firstloop == true)
{
for (int loopindex=0; loopindex<10; loopindex++)
{
// Note[loopindex] = Filecheck for notes
}
MidiOutputX.FindDevice(
1, /*int argc number of ports*/
60, /*char argv argument vector - strings pointed to, i don't really get it*/
);
}
char Note[10];
int KeyIndex = 0;
FileIO::key CurrentKey;
CurrentKey = fileioX.RetrieveKey(KeyIndex);
for (int x = 0; x < 10; x++)
{
Note[x] = CurrentKey.Note[x];
}
// There's a bunch of simple if statements here, nothing I need to bore you with
}
MidiOutput.h:
#pragma once
class MidiOutput {
public:
void FindDevice(int, char);
void PlayNote(unsigned char);
void EndNote();
void CloseDevice();
protected:
};
MidiOutput.cpp:
#include "MidiOutput.h"
#include <Windows.h>
#include <mmsystem.h>
#include <stdio.h>
union { unsigned long word; unsigned char data[4]; } message;
int midiport;
HMIDIOUT device;
void FindDevice(int argc, char** argv)
{
if (argc < 2) {
midiport = 0;
} else {
midiport = atoi(argv[1]);
}
printf("Midi output port set to %d.\n", midiport);
midiOutOpen(&device, midiport, 0, 0, CALLBACK_NULL);
message.data[0] = 0x90; //command byte
message.data[1] = 60; //middle C
message.data[2] = 0; //volume, 0-100
message.data[3] = 0; //not used
}
void MidiOutput::PlayNote(unsigned char Note)
{
message.data[1] = Note;
message.data[2] = 100;
}
void MidiOutput::EndNote()
{
message.data[2] = 0;
}
void MidiOutput::CloseDevice()
{
midiOutReset(device);
midiOutClose(device);
}
Exact Errors:
Error 1 error LNK2019: unresolved external symbol "public: void __thiscall MidiOutput::FindDevice(int,char)" (?FindDevice@MidiOutput@@QAEXHD@Z) referenced in function "public: void __thiscall eventLoop::FindFinalNote(bool,bool,bool,bool,bool,bool,bool,bool)" (?FindFinalNote@eventLoop@@QAEX_N0000000@Z) C:\Users\Hilly\documents\visual studio 2010\Projects\GHX\GHX\eventLoop.obj GHX
Error 2 error LNK2019: unresolved external symbol _imp_midiOutOpen@20 referenced in function "void __cdecl FindDevice(int,char * *)" (?FindDevice@@YAXHPAPAD@Z) C:\Users\Hilly\documents\visual studio 2010\Projects\GHX\GHX\MidiOutput.obj GHX
Error 3 error LNK2019: unresolved external symbol _imp_midiOutClose@4 referenced in function "public: void __thiscall MidiOutput::CloseDevice(void)" (?CloseDevice@MidiOutput@@QAEXXZ) C:\Users\Hilly\documents\visual studio 2010\Projects\GHX\GHX\MidiOutput.obj GHX
Error 4 error LNK2019: unresolved external symbol _imp_midiOutReset@4 referenced in function "public: void __thiscall MidiOutput::CloseDevice(void)" (?CloseDevice@MidiOutput@@QAEXXZ) C:\Users\Hilly\documents\visual studio 2010\Projects\GHX\GHX\MidiOutput.obj GHX
Error 5 error LNK1120: 4 unresolved externals C:\Users\Hilly\documents\visual studio 2010\Projects\GHX\Debug\GHX.exe GHX
Thanks in advance, and sorry about the wall of code, I'm not sure what's necessary.