Неопределенная ссылка на функцию 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++ чувствителен к регистру cleanD3D!= CleanD3D.

Имена функций в C++ чувствительны к регистру. Пытаться:

dx3d_defsnfunc.CleanD3D();
Другие вопросы по тегам