2013-10-05 7 views
0

В простой программе OpenGL У меня есть эта линия ниже:glutKeyboardfunc() параметр функции обратного вызова

glutKeyboardFunc(keypressed); 

проблема моя функция «Keypressed» находится в другом файле CPP включена в проект. Как я могу вызвать эту функцию из другого файла?

в main.cpp:

main() 
{ 
    --- 
    glutKeyboardFunc(keypressed); 
    --- 
} 

в Motion.cpp:

void keypressed(unsigned char key, int x, int y){...} 

вещи я стараюсь (Все дали ошибка компиляции):

glutKeyboardFunc(keypressed); 
glutKeyboardFunc(Motion::keypressed); 
glutKeyboardFunc(&Motion::keypressed); 
glutKeyboardFunc(&keypressed); 

Motion mot; 
glutKeyboardFunc(mot.keypressed); 

Есть предложения? (я использовал freeglut.dll, если библиотека имеет значение для ответа)

+0

Создайте файл 'Motion.h', который имеет объявление функции. –

ответ

1

Вам нужно включить прототип функции где-нибудь, где он будет читаться вашим основным файлом на C++. Один из способов сделать это было бы поставить это выше вашего main функции:

void keypressed(unsigned char key, int x, int y); 

Обычный способ сделать это, чтобы каждый файл C++, который экспортирует функции также заголовка файл, который включает в себя прототипы для всех тех, функции. Затем, когда вы хотите использовать функцию, определенную внутри этого файла, вы можете включить этот заголовочный файл в верхней части файла, который должен использовать эту функцию.

+0

ошибка LNK2019: неразрешенный внешний символ «void __cdecl с клавиатуры (unsigned char, int, int)» (? Keypressed @@ YAXEHH @ Z), на который ссылается функция _main (я получил эту ошибку, когда добавляю прототип функции в main.cpp) –

+0

@Cagkan: Это означает, что каждый из ваших исходных файлов успешно компилируется в объектные файлы, но когда приходит время связать их вместе с исполняемым файлом, будет включен только ваш основной файл объекта. Поскольку ваш основной файл объекта ссылается на другой объектный файл, который не включен, вы получаете нерешенную ошибку ссылки. Как это решить, зависит от того, как вы его компилируете. – icktoofay

+0

thx для ваших полезных ответов. Я не знаком с visual studio C++ компилятором: /. Я буду искать варианты компиляции визуальной студии. –

Смежные вопросы