Hi,
I recently submitted an UE 5.7 plugin to Fab and it was initially rejected for some missing documentation steps and it did not have any compilation errors. But the recent submission was rejected due to some compilation errors. I think depending on who is testing/compiling the plugin, the error occurs.
On my Windows machine and macOS, the plugin compiles and runs fine in UE 5.7. Also for final packaging, I’m using the UAT tool.
// Windows
call “%UAT_PATH%” BuildPlugin -plugin=“%UPLUGIN_PATH%” -package=“%OUTPUT_PATH%”
// macOS
“$UAT_PATH” BuildPlugin -plugin=“$UPLUGIN_PATH” -package=“$OUTPUT_PATH”
It depends on the minimp3 opensource C++ library. Any idea how I could replicate the errors below?
Errors
Windows
[8/10] (Wall: 1.03s CPU: 1.08s Mem: 441.23 MB) Link [x64] UnrealEditor-RTTS.dll Module.RTTS.cpp.obj : error LNK2019: unresolved external symbol mp3dec_init referenced in function “public: __cdecl FTTSMp3Decoder::FTTSMp3Decoder(void)” (??0FTTSMp3Decoder@@QEAA@XZ) Module.RTTS.cpp.obj : error LNK2019: unresolved external symbol mp3dec_decode_frame referenced in function “public: bool __cdecl FTTSMp3Decoder::DecodeFrame(class TArray<unsigned char,class TSizedDefaultAllocator<32> > const &,int &,class TArray<short,class TSizedDefaultAllocator<32> > &,int &)” (?DecodeFrame@FTTSMp3Decoder@@QEAA_NAEBV?$TArray@EV?$TSizedDefaultAllocator@$0CA@@@@@AEAHAEAV?$TArray@FV?$TSizedDefaultAllocator@$0CA@@@@@1@Z) Module.RTTS.cpp.obj : error LNK2019: unresolved external symbol mp3dec_load_buf referenced in function "public: __cdecl private: void __cdecl URTTSSpeakAsync::DecodeAndPlay(class TArray<unsigned char,class TSizedDefaultAllocator<32> > const &)'::2’::<lambda_1>:: operator()(void)const " (??R<lambda_1>@?1??DecodeAndPlay@URTTSSpeakAsync@@AEAAXAEBV?$TArray@EV?$TSizedDefaultAllocator@$0CA@@@@@@Z@QEBA@XZ) d:\build\U5M\Sync\LocalBuilds\PluginTemp\HostProject\Plugins\RTTS\Binaries\Win64\UnrealEditor-RTTS.dll : fatal error LNK1120: 3 unresolved externals
MAC
[15/21] (Wall: 0.27s) Link [Intel] UnrealEditor-RTTS.dylib_x64 Undefined symbols for architecture x86_64:
“_mp3dec_decode_frame”, referenced from:
URTTSSpeakAsync::ProcessStreamBuffer() in Module.RTTS.cpp.o
“_mp3dec_init”, referenced from:
URTTSSpeakAsync::URTTSSpeakAsync(FObjectInitializer const&) in Module.RTTS.cpp.o
URTTSSpeakAsync::URTTSSpeakAsync(FVTableHelper&) in Module.RTTS.cpp.o
URTTSSpeakAsync::StartHttpStreaming() in Module.RTTS.cpp.o
UE::Core::Private::Function::TFunctionRefCaller<URTTSSpeakAsync::DecodeAndPlay(TArray<unsigned char, TSizedDefaultAllocator<32>> const&)::$_0, void>::Call(void*) in Module.RTTS.cpp.o
“_mp3dec_load_buf”, referenced from:
FTTSMp3Decoder::DecodeAll(TArray<unsigned char, TSizedDefaultAllocator<32>> const&, TArray<short, TSizedDefaultAllocator<32>>&, int&, int&) in Module.RTTS.cpp.o
ld: symbol(s) not found for architecture x86_64
clang++: error: linker command failed with exit code 1 (use -v to see invocation)
[16/21] (Wall: 0.35s) Link [Apple] UnrealEditor-RTTS.dylib_arm64 Undefined symbols for architecture arm64:
“_mp3dec_decode_frame”, referenced from:
URTTSSpeakAsync::ProcessStreamBuffer() in Module.RTTS.cpp.o
“_mp3dec_init”, referenced from:
URTTSSpeakAsync::URTTSSpeakAsync(FObjectInitializer const&) in Module.RTTS.cpp.o
URTTSSpeakAsync::URTTSSpeakAsync(FVTableHelper&) in Module.RTTS.cpp.o
URTTSSpeakAsync::StartHttpStreaming() in Module.RTTS.cpp.o
UE::Core::Private::Function::TFunctionRefCaller<URTTSSpeakAsync::DecodeAndPlay(TArray<unsigned char, TSizedDefaultAllocator<32>> const&)::$_0, void>::Call(void*) in Module.RTTS.cpp.o
“_mp3dec_load_buf”, referenced from:
FTTSMp3Decoder::DecodeAll(TArray<unsigned char, TSizedDefaultAllocator<32>> const&, TArray<short, TSizedDefaultAllocator<32>>&, int&, int&) in Module.RTTS.cpp.o
ld: symbol(s) not found for architecture arm64
clang++: error: linker command failed with exit code 1 (use -v to see invocation)