Can't Package Project in 4.16. Error C2061, C2504, C3646, C4430, C2614

Hello. I migrated my project from a gihub 4.14.1 branch to the new 4.16.1

It all works fine in the editor after fixing a bunch of old standard code. I can launch the engine no problem, and run through my game in VR preview.

The issue comes when I wanted to package the game for the first time since I migrated my project. The log spits out the following error:

[2017.06.24-15.05.03:451][767]UATHelper: Packaging (Windows (64-bit)): UnrealBuildTool: ERROR: UBT ERROR: Failed to produce item: D:\UnrealEngine\UnrealEngine4-16\Engine\Plugins\MidiAsset\Procedural-Midi\MidiAsset\Binaries\Win64\MusicalRange-ProceduralAudio.lib

And before that it spits out a lot of errors related to the Procedural Midi plugin that my game uses.

Full Package Log [link text][1]

Dropbox Link - Dropbox - PackageLog1.txt - Simplify your life

I got it from the github master branch. On the market place, the plugin claims to support 4.16. I am baffled by this as, the engine compiles fine for the editor.

Procedural Midi Github - GitHub - Geromatic/Midi-Unreal: Midi for Unreal Engine

Procedural Midi Marketplace - Procedural Midi in Code Plugins - UE Marketplace

I looked at this similar question, but I don’t know how that applies to the plugin. As there is one MidiAssetEditor.Build.Cs, but it’s the code is very similar to the one being used in my 4.14 version.

I also tried out what this post suggested, but I did not have any luck with that.

Anyone knows what is wrong and how I could fix this?

I am still stumped by this issue. I just downloaded the engine from the epic launcher, made a test project, added the same uassets for the MIDI stuff and it did package and is playable as a stand alone game.

I then created code for the test project, so I could look at the code from the Marketplace/MidiAsset folder, and it all looks very similar. The *.build.cs files are the same. The Headers and Cpp files are also the same.

I don’t get what is going on that in my own compile it will not package.

I tried creating anew project with the marketplace version using the launcher 4.16.1 version and it did package. Is there a way I could obtain the code from the market place version quickly? When I open it in VS it doesn’t allow me to explore to disk.

How do I check if I have the Unity Builds disabled?

No.

I have an version of the engine for my game. From Github based on 4.16.1. That version, then I added under plugins the MidiAsset plugin and build under Development Editor, win64.

The engine compiles succesfully, and I can run and play in VR mode on the editor. When I package the game to test as stand alone, the packaging fails with the log I posted originally.

To test out and check for differences. I downloaded UE4.16.1 from the epic launcher, and installed from the market place the MidiAsset plugin. I cretaed a test project “tets416” and migrated some files from my game to the new test project. After fiddling with it, and making sure MIDI was working as intended. I packaged that project and it was successful. I could run it in stand alone.

Maybe I could copy the code that the marketplace plugin shows when I add code to the test416 project and look at the engine files. Under Engine/Plugins/Marketplace/MidiAsset. But I can’t just grab the files, or explore with windows?

EDIT. I looked under Engine/Saved/UnrealBuildTool and under AppData/Roaming and both XMLs were empty.

I solved this issue by instead of having the ProceduralMidi plugin be engine installed, it is now installed on the project instead.

I had to change a bunch of cpp files to have the headers be on top (the *privatePCH,h header), which took some time but that did it.

Now, the lib that failed before does work and gets packaged. Now I am getting another packaging error.

LogLinker:Error: BPGC_ARCH_FOR_CDO_MusicalRangeBPFunctionLibrary_2 has an inappropriate outermost, it was probably saved with a deprecated outer (file: ../../../../../Dropbox/MusicalRange-4.16/Content/MusicShoot/Blueprints/BP_SongFinder.uasset)

But I think that is something for another post.

The fault is in the plugin code, it’s carelessly written with types used without including the necessary headers first. Unfortunately UE4’s use of precompiled headers and unity builds can cause these errors to go unnoticed in certain contexts, though I’m surprised this made it through the marketplace build check as is.

I don’t know details of what exactly is different between launcher and github engine builds, perhaps you have unity builds disabled? Otherwise maybe shared engine pchs are different in source builds.

Regardless, the only way this will be reliable under all conditions and in the future, is for the code to be cleaned up with explicit includes of the required headers.

Are you saying the marketplace version packaged okay within your source engine build, and is different from the Github version of the plugin? Or just that it packaged within the launcher engine?

Unity builds would be disabled within BuildConfiguration,xml, which can exist at various places; somewhere in your documents folder, in Engine/Saved/UnrealBuildTool, and maybe also in your project folder.

I’m not sure what you’re asking about getting the files, but I just checked and the marketplace version of the plugin also has the same issue with missing includes. So it comes down to a difference in the build environment between launcher and Github engines. Like I said, there are some differences but I don’t know exactly what they are.

Your best bet would be to simply fix the plugin (or suggest the author fixes it) by adding explicit includes. To be clear, whatever the precise differences are, the plugin only builds on the launcher version/editor config due to a reliance on build environment settings that happen to be satisfied in those scenarios, but the code is fundamentally faulty.