xzripper
@xzripper
0xC0000005

Error LNK2019: ссылка на неразрешенный внешний символ public: void __cdecl Window::create(void)?

У меня есть WaveEngine/include/window.h и WaveEngine/include/window.cpp, написанный конструктор в Header файле класса Window работает, но если я выношу обработку функций в window.cpp и потом вызываю их, то получаю следующие ошибки:
main.cpp.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: void __cdecl Window::create(void)" (?create@Window@@QEAAXXZ) в функции main.
main.cpp.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: void __cdecl Window::run(void)" (?run@Window@@QEAAXXZ) в функции main.
untitled4.exe : fatal error LNK1120: неразрешенных внешних элементов: 2


Я использую CLion и CMake и мой CMake такой:
cmake_minimum_required(VERSION 3.25)
project(untitled4)

add_executable(untitled4 main.cpp)

set(P3DSDK C:/Panda3D-1.10.13-x64)

target_link_libraries(untitled4 ${P3DSDK}/lib/libp3framework.lib)
target_link_libraries(untitled4 ${P3DSDK}/lib/libpanda.lib)
target_link_libraries(untitled4 ${P3DSDK}/lib/libpandaexpress.lib)
target_link_libraries(untitled4 ${P3DSDK}/lib/libp3dtool.lib)
target_link_libraries(untitled4 ${P3DSDK}/lib/libp3dtoolconfig.lib)

include_directories(${P3DSDK}/include)


Если добавить window.cpp в add_executable то все будет работать, но window.cpp задумывается как часть библиотеки которую можно потом установить, и если библиотека будет больше, то я буду должен добавлять каждый CPP файл в add_executable? Или можно как то по другому?
  • Вопрос задан
  • 361 просмотр
Пригласить эксперта
Ответы на вопрос 1
@res2001
Developer, ex-admin
но window.cpp задумывается как часть библиотеки которую можно потом установить

Плагин что ли?
Ну вы и должны с библиотекой работать соответственно. Как-то проверять наличие плагина, если он есть - грузить его в память, получать адреса его экспортируемых функций, использовать экспортируемые функции через указатели на функции, а не напрямую. А так же вы должны предусмотреть штатный вариант работы, когда библиотеки нет.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы