Ошибка линкера clang

Только начал осваивать clang, установил, запустил, на простом коде из пары строк работает. Попытался запустить проект с библиотеками, заголовочными файлами и т.д. и выдает ошибку линкера

main-cd4017.o : error LNK2019: unresolved external symbol "public: static void __cdecl UI::Render(void)" (?Render@UI@@SAXXZ) referenced in function wWinMain

main : fatal error LNK1120: 1 unresolved externals
clang++: error: linker command failed with exit code 1120 (use -v to see invocation)

Проект не мой, через VS запускается без ошибок, я так понимаю, что проблема в том что clang не видит где объявляется и определяется функция Render() и мне надо как-то выполнить линковку всех файлов?

Вот так выглядит main.cpp:

#include "UI.h"


#ifdef _WINDLL



HANDLE hCurrentUIThread = nullptr;

BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpReserved)
{
    if (fdwReason == DLL_PROCESS_ATTACH)
    {
        DisableThreadLibraryCalls(hinstDLL);
        UI::hCurrentModule = hinstDLL;
        hCurrentUIThread = CreateThread(nullptr, NULL, (LPTHREAD_START_ROUTINE)UI::Render, nullptr, NULL, nullptr);
    }

    if (fdwReason == DLL_PROCESS_DETACH)
        TerminateThread(hCurrentUIThread, 0);

    return TRUE;
}

#else


int WINAPI wWinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, _In_ LPWSTR lpCmdLine, _In_ int nShowCmd)
{
    UI::Render();
    return 0;
}

#endif

И вот так UI.h, из которого и берется функция Render(), на которую ругается линкер:

#ifndef UI_H
#define UI_H

#include "pch.h"

extern IMGUI_IMPL_API LRESULT ImGui_ImplWin32_WndProcHandler(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);

class UI
{
private:
    static ID3D11Device* pd3dDevice;
    static ID3D11DeviceContext* pd3dDeviceContext;
    static IDXGISwapChain* pSwapChain;
    static ID3D11RenderTargetView* pMainRenderTargetView;

    static bool CreateDeviceD3D(HWND hWnd);
    static void CleanupDeviceD3D();
    static void CreateRenderTarget();
    static void CleanupRenderTarget();
    static LRESULT WINAPI WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);

public:
    static HMODULE hCurrentModule;

    static void Render();

};

#endif

Определение функции Render() происходит в файле UI.cpp


Ответы (0 шт):