Urho3D
GameDev.ru / Сообщества / Urho3D / Форум / Не собирается проект ругается на конструкцию в hashmap

Не собирается проект ругается на конструкцию в hashmap

Поделиться
nicks80Новичокwww8 окт. 201714:09#0
vc2015

    /// Reserve a node.
    Node* ReserveNode()
    {
        Node* newNode = static_cast<Node*>(AllocatorReserve(allocator_));
        new(newNode) Node(); /// тут
        return newNode;
    }
///////////
p:\dsc\libs\urho3d\build\include\urho3d\Container\HashMap.h:740: ошибка: C2061: syntax error: identifier 'newNode'

p:\dsc\libs\urho3d\build\include\urho3d\Container\HashMap.h:738: while compiling class template member function 'Urho3D::HashMap<unsigned int,Urho3D::ComponentReplicationState>::Node *Urho3D::HashMap<unsigned int,Urho3D::ComponentReplicationState>::ReserveNode(void)'

p:\dsc\libs\urho3d\build\include\urho3d\Container\HashMap.h:232: see reference to function template instantiation 'Urho3D::HashMap<unsigned int,Urho3D::ComponentReplicationState>::Node *Urho3D::HashMap<unsigned int,Urho3D::ComponentReplicationState>::ReserveNode(void)' being compiled

P:\dsc\libs\Urho3D\build\include\Urho3D\Scene\ReplicationState.h:185: see reference to class template instantiation 'Urho3D::HashMap<unsigned int,Urho3D::ComponentReplicationState>' being compiled

nicks80Новичокwww8 окт. 201718:59#1
В общем порядок включения заголовочных файлов неверный был. разобрался.

Собирал все библиотеки из cmake->vc2015.
все собралось вроде норм.

При создании  проекта в qt.

линкер начал ругатся добавил библиотеки
LIBS += Advapi32.lib
LIBS += Winmm.lib
LIBS += Opengl32.lib
LIBS += Gdi32.lib
LIBS += User32.lib
LIBS += Ole32.lib
#LIBS += Mincore.lib
#LIBS += version.lib
LIBS += Imm32.lib

потом exe запросил api-ms-win-core-processenvironment-l1-2-0.dll  у меня v7 64 и там нигде в помине такой библиотеки нет.
скачал в интернете для v8. приложение просто падает в момент запуска и все.

Я вот не пойму если все собралось в vc. то что мешает в qt с тем-же компиляторов. дефайны то-же все взял из простого проекта vc.
в vc выбрано опция для v8.1 поставить ниже нельзя.
хотя запускается на 7ке.
в qtcreator тоже компилятор vc.

Правка: 8 окт. 2017 19:03

nicks80Новичокwww9 окт. 201717:15#2
забил на vc.
собирал на mingw что в комплекте идет с qt. все собралось ок. примеры запускаются.

собирал так батником

SET CMAKE_MAKE_PROGRAM="MinGW Makefiles"
SET CMAKE_C_COMPILER="c:\Qt\Tools\mingw530_32\bin\i686-w64-mingw32-gcc.exe"
SET CMAKE_CXX_COMPILER="c:\Qt\Tools\mingw530_32\bin\i686-w64-mingw32-g++.exe"
PATH = c:\Qt\Tools\mingw530_32\bin\;c:\Program Files\CMake\bin
cmake_codeblocks Build -WIN32=1 URHO3D_64BIT=0 URHO3D_C++11=1 URHO3D_OPENGL=1 URHO3D_D3D11=0 -DURHO3D_WIN32_CONSOLE=1 CMAKE_BUILD_TYPE="RelWithDebInfo"
В папке ....\libs\Urho3d\Build\

файл pro qtcreator

QT -= gui

CONFIG += c++11 console
CONFIG -= app_bundle

LIBS += p:\dsc\libs\Urho3d\Build\lib\libUrho3D.a

INCLUDEPATH += p:/dsc/libs/Urho3D/build/include        \
              p:/dsc/libs/Urho3D/build/include/Urho3D/ThirdParty
DEFINES += QT_DEPRECATED_WARNINGS

SOURCES += main.cpp

при сборке проекта ругается на отсутствие тел функий
p:\dsc\libs\Urho3D\build\include\Urho3D\Engine\Application.h:37: ошибка: undefined reference to `_imp___ZN6Urho3D8TypeInfoD1Ev'
p:\dsc\libs\Urho3D\build\include\Urho3D\UI\UIEvents.h:58: ошибка: undefined reference to `_imp___ZN6Urho3D10StringHashC1EPKc'
и таких немного немало под 600.
я так понял он собрал все по разным библиотекам и их так-же надо в проект добавлять. а как собрать что-бы все в одной лежало?

nicks80Новичокwww9 окт. 201718:55#3
Она собирается без проблем.
командой cmake_mingw Build -DURHO3D_LIB_TYPE="STATIC" -DWIN32=1 -DURHO3D_SAMPLES=0 -DURHO3D_64BIT=0 -DURHO3D_C++11=1 -DURHO3D_OPENGL=1 -DURHO3D_D3D11=0 -DURHO3D_WIN32_CONSOLE=1 -DCMAKE_BUILD_TYPE="RelWithDebInfo"
mingw32-make потом.

только видать еще просить все библиотеки подключать отдельно наверно так и надо.

подключил все в ручную
LIBS += p:\dsc\libs\Urho3d\Build\lib\libUrho3D.a
LIBS += p:\dsc\libs\Urho3d\Build\Source\ThirdParty\AngelScript\libAngelScript.a
LIBS += p:\dsc\libs\Urho3d\Build\Source\ThirdParty\Assimp\libAssimp.a
LIBS += p:\dsc\libs\Urho3d\Build\Source\ThirdParty\Box2D\libBox2D.a
LIBS += p:\dsc\libs\Urho3d\Build\Source\ThirdParty\Bullet\libBullet.a
LIBS += p:\dsc\libs\Urho3d\Build\Source\ThirdParty\Civetweb\libCivetweb.a
LIBS += p:\dsc\libs\Urho3d\Build\Source\ThirdParty\Detour\libDetour.a
LIBS += p:\dsc\libs\Urho3d\Build\Source\ThirdParty\DetourCrowd\libDetourCrowd.a
LIBS += p:\dsc\libs\Urho3d\Build\Source\ThirdParty\DetourTileCache\libDetourTileCache.a
LIBS += p:\dsc\libs\Urho3d\Build\Source\ThirdParty\FreeType\libFreeType.a
LIBS += p:\dsc\libs\Urho3d\Build\Source\ThirdParty\GLEW\libGLEW.a
LIBS += p:\dsc\libs\Urho3d\Build\Source\ThirdParty\ik\libik.a
LIBS += p:\dsc\libs\Urho3d\Build\Source\ThirdParty\JO\libJO.a
LIBS += p:\dsc\libs\Urho3d\Build\Source\ThirdParty\kNet\libkNet.a
LIBS += p:\dsc\libs\Urho3d\Build\Source\ThirdParty\LibCpuId\libLibCpuId.a
#p:\dsc\libs\Urho3d\Build\Source\ThirdParty\Lua\CMakeFiles\lua_interpreter.dir\objects.a
#p:\dsc\libs\Urho3d\Build\Source\ThirdParty\Lua\CMakeFiles\luac.dir\objects.a
LIBS += p:\dsc\libs\Urho3d\Build\Source\ThirdParty\Lua\libLua.a
LIBS += p:\dsc\libs\Urho3d\Build\Source\ThirdParty\LZ4\libLZ4.a
LIBS += p:\dsc\libs\Urho3d\Build\Source\ThirdParty\PugiXml\libPugiXml.a
LIBS += p:\dsc\libs\Urho3d\Build\Source\ThirdParty\Recast\libRecast.a
LIBS += p:\dsc\libs\Urho3d\Build\Source\ThirdParty\SDL\libSDL.a
LIBS += p:\dsc\libs\Urho3d\Build\Source\ThirdParty\StanHull\libStanHull.a
#p:\dsc\libs\Urho3d\Build\Source\ThirdParty\toluapp\src\bin\CMakeFiles\tolua++.dir\objects.a
LIBS += p:\dsc\libs\Urho3d\Build\Source\ThirdParty\toluapp\src\lib\libtoluapp.a
LIBS += p:\dsc\libs\Urho3d\Build\Source\ThirdParty\WebP\libWebP.a

толку ноль как понять как компилятор/линкер именует функции где тело ее находится.
собирал-же одним компилятором. библиотеки все которые были подключил.

P:\dsc\dlfxsrv\dlfxsrv\main.cpp:43: ошибка: undefined reference to `_imp___ZN6Urho3D14ParseArgumentsEiPPc'
...
p:\dsc\libs\Urho3D\build\include\Urho3D\Core\CoreEvents.h:33: ошибка: undefined reference to `_imp___ZN6Urho3D10StringHashC1EPKc'
...
p:\dsc\libs\Urho3D\build\include\Urho3D\Scene\SceneEvents.h:206: ошибка: undefined reference to `_imp___ZN6Urho3D18EventNameRegistrar17RegisterEventNameEPKc'

nicks80Новичокwww9 окт. 201720:14#4
косяк со сборкой оказался из-за не подключеной  в самом начале #include <Urho3D/Urho3D.h>
неверно где-то внутри исходников меняются параметры возвращаемых значений функций.

но проблема теперь в другом не находит стандартные функции winapi
P:\dsc\libs\Urho3d\Source\ThirdParty\SDL\src\core\windows\SDL_windows.c:73: ошибка: undefined reference to `_imp__CoInitializeEx@8'
P:\dsc\libs\Urho3d\Source\Urho3D\Core\Timer.cpp:75: ошибка: undefined reference to `_imp__timeGetTime@0'
P:\dsc\libs\Urho3d\Source\ThirdParty\SDL\src\video\windows\SDL_windowsmouse.c:132: ошибка: undefined reference to `_imp__CreateDIBSection@24'

подключил вроде все
LIBS += -lole32 -loleaut32 -luuid -lcomctl32 -lwbemuuid
LIBS += -luser32
LIBS += -lgdi32
не пойму

nicks80Новичокwww9 окт. 201721:27#5
ау никто в qtcreatore не кодит?
вроде не дурак, что он не находит стандартные функции когда ему прям указываешь библиотеку. ощущение что криво собралось. но как тогда собирались примеры из объектников что-ли.
пол дня ерундой занимаешся(
nicks80Новичокwww9 окт. 201723:04#6
Я тут выбирал либу для отрисовки 3д и диву даюсь какой проект не возьми с каждым бубны с плясками тянут кучу зависимостей. лет 12 назад такого и не припомню сразу кодить начинал, а тут месяц перепробовал с пяток либ всего.
что будет дальше сложно представить.
.....
все у меня мозги раком пошли.

вот сам прошник и я точно уверен что он рабочий.  библиотеки все 32битные. я даже мысленно не могу понять почему он собирает их в примере и все работает и при сборке с чистого листа линкер ругается на отсутствие встроенный в api win32 функций.

CONFIG += c++11
CONFIG -= app_bundle
CONFIG -= qt

DEFINES += WIN32 _WINDOWS NDEBUG _SECURE_SCL=0 ENABLE_SSE ENABLE_MINIDUMPS
DEFINES += ENABLE_FILEWATCHER ENABLE_PROFILING ENABLE_LOGGING ENABLE_ANGELSCRIPT
DEFINES += URHO3D_STATIC_DEFINE _CRT_SECURE_NO_WARNINGS HAVE_STDINT_H
DEFINES += URHO3D_OPENGL=1

INCLUDEPATH += p:/dsc/libs/Urho3D/build/include/Urho3D/ThirdParty        \
              p:/dsc/libs/Urho3D/build/include

DEFINES += QT_DEPRECATED_WARNINGS

SOURCES += main.cpp

LIBS += -Lkernel32 -Luser32 -Lgdi32 -Lwinspool -Lshell32 -Lole32 -Loleaut32 -Luuid -Lcomdlg32 -Ladvapi32
LIBS += -Ldbghelp -Limm32 -Lversion -Lwinmm -Lws2_32
LIBS += -Lopengl32 -Lgdiplus1

LIBS += p:\dsc\libs\Urho3d\Build\lib\libUrho3D.a

nicks80Новичокwww9 окт. 201723:20#7
она собрана уже. имеется статическая библиотека.
так вот при использовании этой статической библиотеки не находятся функции апишные винды.
SDL_windows.c:-1: ошибка: undefined reference to `_imp__CoInitializeEx@8'
Timer.cpp:-1: ошибка: undefined reference to `_imp__timeGetTime@0'
SDL_windowsopengl.c:-1: ошибка: undefined reference to `_imp__DescribePixelFormat@16'
SDL_windowskeyboard.c:-1: ошибка: undefined reference to `_imp__CoCreateInstance@20'
итд.
nicks80Новичокwww9 окт. 201723:23#8
да ссылку я видел надо будет запустить сборку с выводом в файл чтобы просмотреть опции при сборке.
nicks80Новичокwww9 окт. 201723:29#9
да меня это то-же порадовало)
месяц с этими зависимостями osg ogre из исходников собирал и еще разных потестил нет спасибо. uhro то что надо.
nicks80Новичокwww10 окт. 20170:57#10
что за проблема так и не разобрался.
Но получилось с SHARED собрать. кто будет собирать вот проект
CONFIG += c++11
CONFIG -= app_bundle
CONFIG -= qt
INCLUDEPATH += p:/dsc/libs/Urho3D/build/include/Urho3D/ThirdParty        \
              p:/dsc/libs/Urho3D/build/include

DEFINES += QT_DEPRECATED_WARNINGS
SOURCES += main.cpp
LIBS += -lkernel32 -luser32 -lgdi32 -lwinspool -lshell32 -lole32 -loleaut32 -luuid -lcomdlg32 -ladvapi32
LIBS += -ldbghelp -limm32 -lversion -lwinmm -lws2_32
LIBS += -lopengl32 -lgdiplus
LIBS += p:\dsc\libs\Urho3d\Build\lib\libUrho3D.dll.a
LIBS +=-lmingw32 -lgcc -lgcc_eh -lmoldname -lmingwex -lpthread -ladvapi32 -lshell32 -luser32 -lkernel32 -liconv -lmingw32 -lgcc -lgcc_eh -lmoldname -lmingwex
команда для сборки cmake_mingw Build -DURHO3D_SAMPLES=1 -DURHO3D_LIB_TYPE="SHARED" URHO3D_C++11=1 URHO3D_OPENGL=1 URHO3D_D3D11=0 -DURHO3D_WIN32_CONSOLE=1 CMAKE_BUILD_TYPE="RelWithDebInfo"

потом cd build 
mingw32-make j4 (в четыре ядра)

в папку кидаем libgcc_s_dw2-1.dll libstdc++-6.dll libwinpthread-1.dll Urho3D.dll
и вуаля

arprogПостоялецwww10 окт. 201712:05#11
nicks80
Лучше используйте CMake для сборки своего проекта. В документации все расписано. А Qt-шный .pro файл это мрак.
nicks80Новичокwww10 окт. 201713:57#12
У меня уже большой проект и используется pro.
что потом что-то начну еще использовать и надо будет скакать по системам сборки.
явно в урхе перемудрили с дифайнами.
при вызове cameraNode_->GetDirection();
начинается опять ругаться
C:\Qt\Tools\mingw530_32\lib\gcc\i686-w64-mingw32\5.3.0\include\xmmintrin.h:968: ошибка: inlining failed in call to always_inline 'float _mm_cvtss_f32(__m128)': target specific option mismatch
_mm_cvtss_f32 (__m128 __A)
^

как узнать какие дефайны определены в cmake.

codingmonkeyПостоялецwww10 окт. 201718:52#13
>как узнать какие дефайны определены в cmake.
секция Build options
https://urho3d.github.io/documentation/HEAD/_building.html
nicks80Новичокwww10 окт. 201719:01#14
да пересмотрел и перепробовал.
все дело в определениях urho3d.h надо добавлять то что выбирали при сборке.
в итоге с dll работаю.

/ Форум / Urho3D - игровой движок / ЗАДАВАЙТЕ ВОПРОСЫ

2001—2017 © GameDev.ru — Разработка игр