Linking error when porting IM4U plugin (4.25) to 4.26

I’m getting linking errors when trying to compile a 4.25 plugin IM4U (GitHub - tekifuta/IM4U: Import MMD models and motion files plugin for Unreal Engine 4.) in 4.26.
ProcessImportMeshInfluences(), ProcessImportMeshMaterials() and ProcessImportMeshSkeleton() are the problem. These were used with extern void ProcessImportMeshInfluences(FSkeletalMeshImportData& ImportData); (and similar for the other two) but this stopped working in 4.26 for some reason.

According to ProcessImportMeshSkeleton | Unreal Engine Documentation it seems like the module is UnrealEd but it is already added in the plugin build.cs dependencies so I’m confused. Does anyone know what’s wrong?

@cyaoeu Any idea on how did you solve this? I’m having the same problem. Thanks.

I just throwed away visual studio and used JetBrains raider instead and I managed to build it successfully thanks to the IDE helpers.

Now I’m having runtime problems while importing models, but it works!

I will make a fork and link it when I stabilize it.

in PmxFactory.h, add
#include “Factories/FbxSkeletalMeshImportData.h”

in PmxFactory.cpp, comment out extern void calls at line 62, then change
ProcessImportMeshMaterials(SkeletalMesh->Materials, *SkelMeshImportDataPtr);
to
SkeletalMeshHelper::ProcessImportMeshMaterials(SkeletalMesh->Materials, *SkelMeshImportDataPtr);
and so on.
ProcessImportMeshInfluences(*SkelMeshImportDataPtr);
to
SkeletalMeshHelper::ProcessImportMeshInfluences(*SkelMeshImportDataPtr, SkeletalMesh->GetPathName());

Then some other stuff from line 1225:
FSkeletalMeshLODInfo* LODInfo = SkeletalMesh->GetLODInfo(0);

IMeshUtilities::MeshBuildOptions Options;
Options.FillOptions(LODInfo->BuildSettings);
//Force the normals or tangent in case the data is missing
Options.bComputeNormals = true;
Options.bComputeTangents = false;

if (bCreateRenderData)
{
	FSkeletalMeshLODModel& BuildLODModel = SkeletalMesh->GetImportedModel()->LODModels[0];

1259:
if (!MeshUtilities.BuildSkeletalMesh(
BuildLODModel,
SkeletalMesh->GetPathName(),
SkeletalMesh->RefSkeleton,
LODInfluences,
LODWedges,
LODFaces,
LODPoints,
LODPointToRawMap,
Options)
)

in PmxSkeltalMeshImport.cpp, from 1636:
FSkeletalMeshLODInfo* LODInfo = TempSkeletalMesh->GetLODInfo(0);

	IMeshUtilities::MeshBuildOptions Options;
	Options.FillOptions(LODInfo->BuildSettings);
	//Force the normals or tangent in case the data is missing
	Options.bComputeNormals = true;
	Options.bComputeTangents = false;

	FSkeletalMeshLODModel& BuildLODModel = TempSkeletalMesh->GetImportedModel()->LODModels[0];

1650:
BuildLODModel,
//TempSkeletalMesh->GetImportedModel()->LODModels[0],
TempSkeletalMesh->GetPathName(),
TempSkeletalMesh->RefSkeleton,
LODInfluences,
LODWedges,
LODFaces,
LODPoints,
LODPointToRawMap
LODPointToRawMap,
Options

This should make it build, but I think I just wanted this for animations. For models I recommend VRM4U. GitHub - ruyo/VRM4U: Runtime VRM loader for UnrealEngine4
There’s a setting somewhere in the plugin settings to enable other formats like MMD.

@cyaoeu Thanks for the tip about VRM4U I wanted to import models and animations so if that plugin is better i’ll give it a try.