Неопределенная ссылка на функцию C++
У меня есть неопределенная ссылка на функцию:
Entry.cpp (вход в программу):
................
ShowWindow(hWnd, nCmdShow);
DX3D_DEFS_AND_FUNC dx3d_defsnfunc;
dx3d_defsnfunc.initD3D(hWnd);
MSG msg;
while(TRUE)
{
while(PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
if(msg.message == WM_QUIT)
break;
dx3d_defsnfunc.render_frame();
}
dx3d_defsnfunc.cleanD3D(); //undefined reference to DX3D_DEFS_AND_FUNC::CleanD3D();
return msg.wParam;
}
DirectX9.h:
class DX3D_DEFS_AND_FUNC
...
public:
void cleanD3D();
...
DirectX9.cpp:
void cleanD3D()
{
dx9_func_def.v_buffer->Release();
dx9_func_def.d3ddev->Release();
dx9_func_def.d3d->Release();
}
Я понятия не имею, что не так. Я пытался сократить код. Скажем, если вам нужно больше кода программы. Спасибо.
Извините.. Был cleanD3D, а не CleanD3D. Я ошибся, когда я отправил.. Есть еще ошибка неопределенной ссылки..
3 ответа
Решение
В определении функции отсутствует имя класса, и оно неправильно записано;
void cleanD3D()
{
...
...должно быть...
void DX3D_DEFS_AND_FUNC::CleanD3D()
{
...
Имена функций в C++ чувствительны к регистру. Пытаться:
dx3d_defsnfunc.CleanD3D();