如何解决使用 Premake 构建 Assimp 时的链接器错误
我正在引擎中实现 assimp 5.0.1,但无法链接它,我想是因为包含它的方式,但我不知道我做错了什么。
我在 Windows 中使用 Visual Studio 2019 (C++),我采取的步骤是使用 cmake 作为文档中的状态构建 assimp,并复制文件夹“code/”“contrib/”和“include/”该项目,在“Assimp”文件夹内。有了这个,我制作了一个 premake 文件来在引擎的项目中构建它(我使用 premake5 作为生成器)。
问题是我收到了 5 个链接器错误。我假设我没有在 premake 中包含一些需要的文件。链接器错误是下一个:
包含包含导致链接器错误的函数的文件会导致更多的链接器问题,我无法通过继续添加或包含文件来解决这些问题,因此我不知道如何进行。
在 premake 文件(复制如下)中,例如,如果我评论一些定义,如“ASSIMP_BUILD_NO_IFC_IMPORTER”,它将触发更多链接器错误(在这种情况下为 IFC 函数),这就是为什么我猜有一些错误的包含或某物。有谁知道它可能有什么问题?会不会很有帮助,因为我真的很迷茫,我已经用了一个星期了。
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","contrib/irrXML/*",}
includedirs
{
"include","contrib/irrXML","contrib/rapidjson/include","code"
}
-- And more lines of platform-related configurations that have nothing to do
解决方法
也许你可以查看一些你遇到 LNK 2019 的案例
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。