[Stk] Beginners question using RtMidi
Robert Gründler
doobre@gmail.com
Wed, 04 Apr 2007 17:06:55 +0200
Hi,
i'm having troubles implementing the RtMidiCallback function to process
incoming midi messages.
I'ts a beginners mistake i assume, i'm getting a linker error:
midi_in.cpp:37: undefined reference to `call_back(double,
std::vector<unsigned char, std::allocator<unsigned char> >*, void*)'
Here's the code:
#include <iostream>
#include "RtMidi.h"
#include <signal.h>
#include <vector>
using namespace std;
void call_back(double timeStamp, std::vector <unsigned char> *message,
void *userData) ;
int main( int argc, char *argv[] ) {
RtMidiIn *midi_in = 0;
try {
midi_in = new RtMidiIn();
}
catch ( RtError& error ) {
error.printMessage();
exit(0);
}
midi_in->openPort(1);
midi_in->setCallback(&call_back);
delete midi_in;
return 0;
}
Here's how my makefile looks like:
### STK examples Makefile - for various flavors of unix
PROGRAMS = tester midi_in
RM = /bin/rm
SRC_PATH = ../../src
OBJECT_PATH = /usr/lib/
vpath %.o $(OBJECT_PATH)
INCLUDE =
ifeq ($(strip $(INCLUDE)), )
INCLUDE = /usr/include/
endif
vpath %.h $(INCLUDE)
CC = g++
DEFS = -D__LITTLE_ENDIAN__
DEFS +=
CFLAGS = -O3
CFLAGS += -Wall -g -D__GXX__ -I$(INCLUDE)
LIBRARY = -ljack -lasound -lpthread -lm -lasound
LIBRARY +=
REALTIME = yes
ifeq ($(REALTIME),yes)
DEFS += -D__LINUX_JACK__ -D__LINUX_ALSASEQ__
endif
RAWWAVES =
ifeq ($(strip $(RAWWAVES)), )
RAWWAVES = ../../rawwaves/
endif
DEFS += -DRAWWAVE_PATH=\"$(RAWWAVES)\"
%.o : $(SRC_PATH)/%.cpp
$(CC) $(CFLAGS) $(DEFS) -c $(<) -o $(OBJECT_PATH)/$@
all : $(PROGRAMS)
$(OBJECTS) : Stk.h
clean :
-rm $(PROGRAMS)
strip :
strip $(PROGRAMS)
tester: test.cpp
$(CC) $(CFLAGS) test.cpp -o tester -lstk -ljack -lasound
midi_in: midi_in.cpp
$(CC) $(CFLAGS) midi_in.cpp -o midi_in -lstk -ljack -lasound
-lpthread -lm -lasound
Any help would be greatly appreciated!
-robert