jacksondunstan / UnityNativeScripting

Unity Scripting in C++

Home Page:https://jacksondunstan.com/articles/3938

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Generated bindings cause errors when compiling for il2cpp on OSX Standalone

philipcass opened this issue · comments

I'm not a compiler expert but there seems to be some issue with the codegen on OSX compiler.

PROJECT/Temp/StagingArea/Data/il2cppOutput/Bindings.h:650:11: error: exception specification of overriding function is more lax than base version
                virtual ~String();

Looks like the defaulted destructor of Object is implicitly noexcept on that compiler:
https://github.com/jacksondunstan/UnityNativeScripting/blob/master/Unity/Assets/CppSource/NativeScript/Bindings.h#L588
Changing that to an empty function may help. I just did that in 00443ef, so please pull and try again.

That definitely helped but still getting some errors:

PROJECT/Temp/StagingArea/Data/il2cppOutput/Bindings.cpp:1378:5: error: delegating constructors are permitted only in C++11
                : IFormattable(Plugin::InternalUse::Only, other.Handle)
                  ^~~~~~~~~~~~
PROJECT/Temp/StagingArea/Data/il2cppOutput/Bindings.cpp:1459:5: error: delegating constructors are permitted only in C++11
                : IConvertible(Plugin::InternalUse::Only, other.Handle)
                  ^~~~~~~~~~~~

I'm also getting this but it might be due to my changes:

In file included from PROJECT/Temp/StagingArea/Data/il2cppOutput/Game.h:51:
/Users/philipcass/git_repos/timings-standbox/Temp/StagingArea/Data/il2cppOutput/DX11GPUFrameTimer.h:18:9: error: expected ';' at end of declaration list
        SHARP_RUNTIME_DX11GPUFRAME_TIMER_DEFAULT_CONTENTS
        ^
PROJECT/Temp/StagingArea/Data/il2cppOutput/Bindings.cpp:918:41: error: union member 'Value' has a non-trivial copy constructor
                SharpRuntime::BaseOpenGLGPUFrameTimer Value;
                                                      ^

EDIT: I managed to repro these exact errors by setting the CXX_STANDARD property to 98

On further inspection this looks like it's down to Unity taking the c++ code and including it into the il2cpp - if I move out the code from the project and leave the precompiled libraries it compiles fine. Annoying, cause on iOS builds this works fine.

I'm gonna close this ticket as I don't think there's really a bug here

EDIT: It's also fixed in 2019...sorry for the run around, thanks for taking a look!