简体   繁体   中英

Linker Errors when Building Assimp with Premake

I'm implementing assimp 5.0.1 in an engine and I can't get to link it, I guess it's because of the way of including it, but I don't know what it is I'm doing wrong.

I'm in Windows, working with Visual Studio 2019 (C++) and the steps I took were building assimp with cmake as states in the documentation and copied the folders 'code/' 'contrib/' and 'include/' in the project, inside an 'Assimp' folder. With this, I made a premake file to build it within the project of the engine (I'm using premake5 as a generator).

The problem is that I'm getting 5 linker errors. I assume I'm not including some needed file in the premake. The linker errors are the next ones: 在此处输入图片说明

Including the files that contain the functions giving linker errors gives even more linker issues that I cannot solve by keep adding or including files, so I don't know exactly how to proceed.

In the premake file (copied below), if I, for instance, comment some definition like "ASSIMP_BUILD_NO_IFC_IMPORTER", it will trigger more linker errors (in this case for IFC functions), that's why I guess there's some wrong inclusion or something. Does anyone knows what it can be wrong? Would it be so helpful because I'm really lost, I've been with this like a week.

The premake file I'm using is the next:

project 'Assimp'
    kind 'StaticLib'
    language "C++"
    cppdialect "C++17"
    staticruntime "On"

    targetdir ("bin/" .. outputdir .. "/%{prj.name}")
    objdir ("bin-int/" .. outputdir .. "/%{prj.name}")

    defines
    {
        -- "SWIG",
        --"ASSIMP_BUILD_NO_OWN_ZLIB",
        "ASSIMP_BUILD_NO_X_IMPORTER",
        "ASSIMP_BUILD_NO_3DS_IMPORTER",
        "ASSIMP_BUILD_NO_MD3_IMPORTER",
        "ASSIMP_BUILD_NO_MDL_IMPORTER",
        "ASSIMP_BUILD_NO_MD2_IMPORTER",
        "ASSIMP_BUILD_NO_PLY_IMPORTER",
        "ASSIMP_BUILD_NO_ASE_IMPORTER",
        -- "ASSIMP_BUILD_NO_OBJ_IMPORTER",
        "ASSIMP_BUILD_NO_AMF_IMPORTER",
        "ASSIMP_BUILD_NO_HMP_IMPORTER",
        "ASSIMP_BUILD_NO_SMD_IMPORTER",
        "ASSIMP_BUILD_NO_MDC_IMPORTER",
        "ASSIMP_BUILD_NO_MD5_IMPORTER",
        "ASSIMP_BUILD_NO_STL_IMPORTER",
        "ASSIMP_BUILD_NO_LWO_IMPORTER",
        "ASSIMP_BUILD_NO_DXF_IMPORTER",
        "ASSIMP_BUILD_NO_NFF_IMPORTER",
        "ASSIMP_BUILD_NO_RAW_IMPORTER",
        "ASSIMP_BUILD_NO_OFF_IMPORTER",
        "ASSIMP_BUILD_NO_AC_IMPORTER",
        "ASSIMP_BUILD_NO_BVH_IMPORTER",
        "ASSIMP_BUILD_NO_IRRMESH_IMPORTER",
        "ASSIMP_BUILD_NO_IRR_IMPORTER",
        "ASSIMP_BUILD_NO_Q3D_IMPORTER",
        "ASSIMP_BUILD_NO_B3D_IMPORTER",
        "ASSIMP_BUILD_NO_COLLADA_IMPORTER",
        "ASSIMP_BUILD_NO_TERRAGEN_IMPORTER",
        "ASSIMP_BUILD_NO_CSM_IMPORTER",
        "ASSIMP_BUILD_NO_3D_IMPORTER",
        "ASSIMP_BUILD_NO_LWS_IMPORTER",
        "ASSIMP_BUILD_NO_OGRE_IMPORTER",
        "ASSIMP_BUILD_NO_OPENGEX_IMPORTER",
        "ASSIMP_BUILD_NO_MS3D_IMPORTER",
        "ASSIMP_BUILD_NO_COB_IMPORTER",
        "ASSIMP_BUILD_NO_BLEND_IMPORTER",
        "ASSIMP_BUILD_NO_Q3BSP_IMPORTER",
        "ASSIMP_BUILD_NO_NDO_IMPORTER",
        "ASSIMP_BUILD_NO_IFC_IMPORTER",
        "ASSIMP_BUILD_NO_XGL_IMPORTER",
        --"ASSIMP_BUILD_NO_FBX_IMPORTER",
        "ASSIMP_BUILD_NO_ASSBIN_IMPORTER",
        "ASSIMP_BUILD_NO_GLTF_IMPORTER",
        "ASSIMP_BUILD_NO_C4D_IMPORTER",
        "ASSIMP_BUILD_NO_3MF_IMPORTER",
        "ASSIMP_BUILD_NO_X3D_IMPORTER",
        "ASSIMP_BUILD_NO_MMD_IMPORTER",

        "ASSIMP_BUILD_NO_STEP_EXPORTER",
        "ASSIMP_BUILD_NO_SIB_IMPORTER",     
        -- "ASSIMP_BUILD_NO_MAKELEFTHANDED_PROCESS",
        -- "ASSIMP_BUILD_NO_FLIPUVS_PROCESS",
        -- "ASSIMP_BUILD_NO_FLIPWINDINGORDER_PROCESS",
        -- "ASSIMP_BUILD_NO_CALCTANGENTS_PROCESS",
        "ASSIMP_BUILD_NO_JOINVERTICES_PROCESS",
        -- "ASSIMP_BUILD_NO_TRIANGULATE_PROCESS",
        "ASSIMP_BUILD_NO_GENFACENORMALS_PROCESS",
        -- "ASSIMP_BUILD_NO_GENVERTEXNORMALS_PROCESS",
        "ASSIMP_BUILD_NO_REMOVEVC_PROCESS",
        "ASSIMP_BUILD_NO_SPLITLARGEMESHES_PROCESS",
        "ASSIMP_BUILD_NO_PRETRANSFORMVERTICES_PROCESS",
        "ASSIMP_BUILD_NO_LIMITBONEWEIGHTS_PROCESS",
        -- "ASSIMP_BUILD_NO_VALIDATEDS_PROCESS",
        "ASSIMP_BUILD_NO_IMPROVECACHELOCALITY_PROCESS",
        "ASSIMP_BUILD_NO_FIXINFACINGNORMALS_PROCESS",
        "ASSIMP_BUILD_NO_REMOVE_REDUNDANTMATERIALS_PROCESS",
        "ASSIMP_BUILD_NO_FINDINVALIDDATA_PROCESS",
        "ASSIMP_BUILD_NO_FINDDEGENERATES_PROCESS",
        "ASSIMP_BUILD_NO_SORTBYPTYPE_PROCESS",
        "ASSIMP_BUILD_NO_GENUVCOORDS_PROCESS",
        "ASSIMP_BUILD_NO_TRANSFORMTEXCOORDS_PROCESS",
        "ASSIMP_BUILD_NO_FINDINSTANCES_PROCESS",
        "ASSIMP_BUILD_NO_OPTIMIZEMESHES_PROCESS",
        "ASSIMP_BUILD_NO_OPTIMIZEGRAPH_PROCESS",
        "ASSIMP_BUILD_NO_SPLITBYBONECOUNT_PROCESS",
        "ASSIMP_BUILD_NO_DEBONE_PROCESS",
        "ASSIMP_BUILD_NO_EMBEDTEXTURES_PROCESS",
        "ASSIMP_BUILD_NO_GLOBALSCALE_PROCESS",
    }

    files
    {
        "include/**",
        "code/Common/Assimp.cpp",
        "code/Common/BaseImporter.cpp",
        "code/Collada/ColladaLoader.cpp",
        "code/Collada/ColladaParser.cpp",
        "code/Common/CreateAnimMesh.cpp",
        "code/Ply/PlyParser.cpp",
        "code/Ply/PlyLoader.cpp",
        "code/Common/BaseProcess.cpp",
        "code/PostProcessing/EmbedTexturesProcess.cpp",
        "code/PostProcessing/ConvertToLHProcess.cpp",
        "code/Common/DefaultIOStream.cpp",
        "code/Common/DefaultIOSystem.cpp",
        "code/Common/DefaultLogger.cpp",
        "code/PostProcessing/GenVertexNormalsProcess.cpp",
        "code/Common/Importer.cpp",
        "code/Common/ImporterRegistry.cpp",
        "code/Material/MaterialSystem.cpp",
        "code/Common/PostStepRegistry.cpp",
        "code/PostProcessing/ProcessHelper.cpp",
        "code/Common/scene.cpp",
        "code/Common/ScenePreprocessor.cpp",
        "code/PostProcessing/ScaleProcess.cpp",
        "code/Common/SGSpatialSort.cpp",
        "code/Common/SkeletonMeshBuilder.cpp",
        "code/Common/SpatialSort.cpp",
        "code/PostProcessing/TriangulateProcess.cpp",
        "code/PostProcessing/ValidateDataStructure.cpp",
        "code/Common/Version.cpp",
        "code/Common/VertexTriangleAdjacency.cpp",
        "code/Obj/ObjFileImporter.cpp",
        "code/Obj/ObjFileMtlImporter.cpp",
        "code/FBX/FBXAnimation.cpp",
        "code/FBX/FBXBinaryTokenizer.cpp",
        "code/FBX/FBXConverter.cpp",
        "code/FBX/FBXDeformer.cpp",
        "code/FBX/FBXDocument.cpp",
        "code/FBX/FBXDocumentUtil.cpp",
        "code/FBX/FBXImporter.cpp",
        "code/FBX/FBXMaterial.cpp",
        "code/FBX/FBXMeshGeometry.cpp",
        "code/FBX/FBXModel.cpp",
        "code/FBX/FBXNodeAttribute.cpp",
        "code/FBX/FBXParser.cpp",
        "code/FBX/FBXProperties.cpp",
        "code/FBX/FBXTokenizer.cpp",
        "code/FBX/FBXExporter.cpp",
        "code/FBX/FBXExportNode.cpp",
        "code/FBX/FBXExportProperty.cpp",
        "code/FBX/FBXUtil.cpp",
        "code/Obj/ObjFileParser.cpp",
        "code/glTF/glTFImporter.cpp",
        "code/glTF2/glTF2Importer.cpp",
        "code/PostProcessing/MakeVerboseFormat.cpp",
        "code/PostProcessing/CalcTangentsProcess.cpp",
        "code/PostProcessing/ScaleProcess.cpp",
        "code/PostProcessing/EmbedTexturesProcess.cpp",
        "contrib/irrXML/*",
    }

    includedirs
    {
        "include",
        "contrib/irrXML",
        "contrib/rapidjson/include",
        "code"
    }

    -- And more lines of platform-related configurations that have nothing to do

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM