diff --git a/MathLib/Math.cs b/MathLib/Math.cs new file mode 100644 index 0000000..98984eb --- /dev/null +++ b/MathLib/Math.cs @@ -0,0 +1,29 @@ +namespace MathLib; + +public class Math +{ + public float Substract(float a, float b) + { + return a - b; + } + + public float Multiply(float a, float b) + { + return a * b; + } + + public float Devide(float a, float b) + { + return a / b; + } + + public float Power(float a) + { + return a * a; + } + + public float Add(float a, float b) + { + return a + b; + } +} diff --git a/MathLib/MathLib.csproj b/MathLib/MathLib.csproj new file mode 100644 index 0000000..bb23fb7 --- /dev/null +++ b/MathLib/MathLib.csproj @@ -0,0 +1,9 @@ + + + + net8.0 + enable + enable + + + diff --git a/MyLib.Managed/Hello.cs b/MyLib.Managed/Hello.cs index 41ee1d3..982d172 100644 --- a/MyLib.Managed/Hello.cs +++ b/MyLib.Managed/Hello.cs @@ -1,9 +1,20 @@ namespace MyLib; -public class Hello +public class Hello(float a, float b) { - public int Sum(int a, int b) + public float A { get; } = a; + public float B { get; } = b; + + public float Sum() { - return a + b; + // Declare class from MathLib.dll + MathLib.Math math = new(); + + return math.Add(A, B); + } + + public MathLib.Math GetMath() + { + return new(); } } diff --git a/MyLib.Managed/MyLib.Managed.csproj b/MyLib.Managed/MyLib.Managed.csproj index bb23fb7..71593a4 100644 --- a/MyLib.Managed/MyLib.Managed.csproj +++ b/MyLib.Managed/MyLib.Managed.csproj @@ -6,4 +6,8 @@ enable + + + + diff --git a/build.sh b/build.sh index 8d87a69..2bc85fb 100755 --- a/build.sh +++ b/build.sh @@ -23,6 +23,7 @@ help() { echo " -i Input project name (required)" echo " -g Generated project name (default: .Generated)" echo " -o Output folder name (default: libs)" + echo " -y Assume yes to all prompts" echo " --ndk Android NDK path (default: ANDROID_NDK_HOME environment variable)" echo " --no-android Disable Android build (default: false)" echo " --no-ios Disable iOS build (default: false)" @@ -56,6 +57,9 @@ replace_project_names() { # Function to ask for confirmation before continuing # $1: message ask_confirmation() { + if [ "$assume_yes" = true ]; then + return + fi read -p "$1 (y/n) " -n 1 -r echo if [[ ! $REPLY =~ ^[Yy]$ ]]; then @@ -100,7 +104,7 @@ build_android() { for arch in "${!abis[@]}"; do log "Building Android library for $arch" - run "dotnet publish -r linux-bionic-$arch -v normal -c Release -p:DisableUnsupportedError=true -p:PublishAotUsingRuntimePack=true -p:RemoveSections=true" + run "dotnet publish -r linux-bionic-$arch -v normal -c Release -p:DisableUnsupportedError=true -p:PublishAotUsingRuntimePack=true -p:RemoveSections=true -p:AllowUnsafeBlocks=true $generated_project_name.csproj" # Copy the generated library to the output directory mkdir -p $output_dir/${abis[$arch]} @@ -166,6 +170,10 @@ while [ "$1" != "" ]; do shift output=$1 ;; + -y) + shift + assume_yes=true + ;; --ndk) shift export ANDROID_NDK_HOME=$1 diff --git a/template.beyondnetgen.android.config.json b/template.beyondnetgen.android.config.json index 9e6be2b..111cead 100644 --- a/template.beyondnetgen.android.config.json +++ b/template.beyondnetgen.android.config.json @@ -3,144 +3,32 @@ "CSharpUnmanagedOutputPath": "GENERATED_PROJECT_NAME/Generated.cs", "COutputPath": "GENERATED_PROJECT_NAME/Generated.h", "ExcludedTypeNames": [ - "System.ICloneable", - "System.Collections.IEnumerable", - "System.Collections.ICollection", - "System.Collections.IList", - "System.Collections.IEnumerator", - "System.Reflection.MemberInfo", - "System.Array", - "System.Enum", - "System.Boolean", - "System.ValueType", - "System.Int32", - "System.IComparable", "System.GC", - "System.Math", - "System.Convert", - "System.Version", - "System.Guid", - "System.DateTime", - "System.Threading.Thread", - "System.Threading.Timer", - "System.Threading.CancellationTokenSource", - "System.Threading.CancellationToken", - "System.Threading.Tasks.TaskFactory", - "System.Threading.Tasks.Task", - "System.AppDomain", - "System.Random", - "System.Text.Encoding", - "System.Text.StringBuilder", - "System.IO.Path", - "System.IO.File", - "System.IO.FileInfo", - "System.IO.Directory", - "System.IO.DirectoryInfo", - "System.Security.SecureString", + "System.Reflection.MemberInfo", "System.WeakReference", "System.WeakReference`1", "System.Runtime.CompilerServices.ConditionalWeakTable`2", - "System.Threading.Tasks.Task`1", - "System.Collections.Generic.IEnumerable`1", - "System.Collections.Generic.List`1", - "System.Collections.Generic.IList`1", - "System.Collections.Generic.Dictionary`2", - "System.Collections.Generic.IDictionary`2", - "System.Collections.ObjectModel.ReadOnlyCollection`1", - "System.Collections.Generic.IReadOnlyDictionary`2", - "System.Collections.Generic.IAsyncEnumerable`1", - "System.Tuple`1", - "System.Tuple`2", - "System.Tuple`3", - "System.Tuple`4", - "System.Tuple`5", - "System.Tuple`6", - "System.Tuple`7", - "System.Tuple`8", "System.Reflection.MemberInfo", "System.Reflection.ICustomAttributeProvider", - "System.Array", - "System.ICloneable", - "System.Collections.IList", - "System.Collections.ICollection", - "System.Collections.IEnumerable", - "System.Collections.IEnumerator", - "System.Boolean", - "System.ValueType", - "System.Int32", - "System.IComparable", - "System.IConvertible", - "System.TypeCode", - "System.Enum", - "System.ISpanFormattable", - "System.IFormattable", - "System.String", - "System.StringComparison", - "System.Globalization.CultureInfo", - "System.IFormatProvider", - "System.Collections.IStructuralComparable", - "System.Collections.IComparer", - "System.Collections.IStructuralEquatable", - "System.Collections.IEqualityComparer", - "System.Globalization.CultureTypes", - "System.Globalization.CompareInfo", "System.Runtime.Serialization.IDeserializationCallback", "System.Reflection.Assembly", "System.Runtime.Serialization.ISerializable", "System.Runtime.Serialization.SerializationInfo", "System.Runtime.Serialization.SerializationInfoEnumerator", "System.Runtime.Serialization.SerializationEntry", - "System.Char", - "System.IUtf8SpanFormattable", - "System.Globalization.UnicodeCategory", - "System.Double", - "System.Globalization.NumberStyles", - "System.MidpointRounding", - "System.SByte", - "System.Byte", - "System.Int16", - "System.UInt16", - "System.UInt32", - "System.Int64", - "System.UInt64", - "System.Single", - "System.Decimal", - "System.DateTime", - "System.TimeSpan", - "System.Globalization.TimeSpanStyles", - "System.DateTimeKind", - "System.DayOfWeek", - "System.Globalization.DateTimeStyles", - "System.DateOnly", - "System.TimeOnly", - "System.Globalization.Calendar", - "System.Globalization.CalendarAlgorithmType", - "System.Globalization.CalendarWeekRule", "System.Runtime.Serialization.IFormatterConverter", "System.Runtime.Serialization.StreamingContext", "System.Runtime.Serialization.StreamingContextStates", "System.Reflection.AssemblyName", - "System.Version", "System.Reflection.ProcessorArchitecture", "System.Reflection.AssemblyContentType", "System.Reflection.AssemblyNameFlags", - "System.Configuration.Assemblies.AssemblyHashAlgorithm", - "System.Configuration.Assemblies.AssemblyVersionCompatibility", "System.Reflection.StrongNameKeyPair", - "System.IO.FileStream", - "System.IO.Stream", "System.MarshalByRefObject", - "System.IDisposable", - "System.IAsyncDisposable", - "System.Threading.Tasks.ValueTask", - "System.Threading.CancellationToken", - "System.Threading.WaitHandle", - "System.IntPtr", "Microsoft.Win32.SafeHandles.SafeWaitHandle", "Microsoft.Win32.SafeHandles.SafeHandleZeroOrMinusOneIsInvalid", "System.Runtime.InteropServices.SafeHandle", "System.Runtime.ConstrainedExecution.CriticalFinalizerObject", - "System.Threading.CancellationTokenRegistration", "System.Action", "System.MulticastDelegate", "System.Delegate", @@ -165,80 +53,29 @@ "System.Reflection.PropertyInfo", "System.Reflection.PropertyAttributes", "System.Reflection.MethodInfo", - "System.Collections.IDictionary", - "System.Collections.IDictionaryEnumerator", - "System.Collections.DictionaryEntry", - "System.Threading.Tasks.Task", - "System.IAsyncResult", - "System.Threading.Tasks.TaskScheduler", "System.AggregateException", - "System.Threading.Tasks.TaskStatus", - "System.Threading.Tasks.TaskCreationOptions", - "System.Threading.Tasks.TaskFactory", - "System.Threading.Tasks.TaskContinuationOptions", "System.Runtime.CompilerServices.TaskAwaiter", "System.Runtime.CompilerServices.ICriticalNotifyCompletion", "System.Runtime.CompilerServices.INotifyCompletion", "System.Runtime.CompilerServices.ConfiguredTaskAwaitable", - "System.Threading.Tasks.ConfigureAwaitOptions", "System.Runtime.CompilerServices.YieldAwaitable", - "System.TimeProvider", - "System.DateTimeOffset", - "System.TimeZoneInfo", - "System.Threading.ITimer", - "System.Threading.TimerCallback", "System.Runtime.CompilerServices.ValueTaskAwaiter", "System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable", "System.Threading.Tasks.Sources.IValueTaskSource", "System.Threading.Tasks.Sources.ValueTaskSourceStatus", "System.Threading.Tasks.Sources.ValueTaskSourceOnCompletedFlags", - "System.AsyncCallback", - "System.IO.SeekOrigin", "Microsoft.Win32.SafeHandles.SafeFileHandle", - "System.IO.FileAccess", - "System.IO.FileMode", - "System.IO.FileShare", - "System.IO.FileOptions", - "System.IO.FileStreamOptions", "System.Reflection.ManifestResourceInfo", "System.Reflection.ResourceLocation", "System.Reflection.ModuleResolveEventHandler", "System.Reflection.Module", - "System.Guid", "System.Reflection.PortableExecutableKinds", "System.Reflection.ImageFileMachine", "System.Reflection.TypeFilter", - "System.ResolveEventArgs", - "System.EventArgs", - "System.Security.SecurityRuleSet", - "System.Text.Rune", - "System.Buffers.OperationStatus", - "System.Globalization.CompareOptions", - "System.Globalization.SortKey", - "System.Globalization.SortVersion", - "System.Globalization.TextInfo", - "System.Globalization.NumberFormatInfo", - "System.Globalization.DigitShapes", - "System.Globalization.DateTimeFormatInfo", - "System.CharEnumerator", - "System.Text.StringRuneEnumerator", - "System.Text.NormalizationForm", - "System.Text.CompositeFormat", - "System.StringSplitOptions", - "System.Text.Encoding", - "System.Text.EncodingProvider", - "System.Text.EncoderFallback", - "System.Text.EncoderFallbackBuffer", - "System.Text.DecoderFallback", - "System.Text.DecoderFallbackBuffer", - "System.Text.EncodingInfo", - "System.Text.Decoder", - "System.Text.Encoder", "System.Reflection.IReflect", "System.Reflection.GenericParameterAttributes", "System.Reflection.TypeAttributes", "System.Runtime.InteropServices.StructLayoutAttribute", - "System.Attribute", "System.Runtime.InteropServices.LayoutKind", "System.Runtime.InteropServices.CharSet", "System.Reflection.ConstructorInfo", @@ -247,12 +84,9 @@ "System.Reflection.InterfaceMapping", "System.Reflection.MemberFilter", "System.Runtime.InteropServices.Marshal", - "System.Security.SecureString", "System.Runtime.InteropServices.CustomQueryInterfaceMode", "System.NullReferenceException", "System.PlatformNotSupportedException", - "System.NotSupportedException", - "System.UIntPtr", - "System.AppContext" + "System.NotSupportedException" ] } diff --git a/template.beyondnetgen.ios.config.json b/template.beyondnetgen.ios.config.json index 0388327..0ada82b 100644 --- a/template.beyondnetgen.ios.config.json +++ b/template.beyondnetgen.ios.config.json @@ -2,6 +2,9 @@ "AssemblyPath": "INPUT_PROJECT_NAME/bin/Release/NET_SPEC/INPUT_PROJECT_NAME.dll", "CSharpUnmanagedOutputPath": "GENERATED_PROJECT_NAME/Generated.cs", "COutputPath": "GENERATED_PROJECT_NAME/Generated.h", + "AssemblySearchPaths": [ + "MathLib/bin/Release/net8.0/publish/MathLib.dll" + ], "Build": { "Target": "apple-universal" } diff --git a/template.csproj b/template.csproj index efdfd57..4b23c1a 100644 --- a/template.csproj +++ b/template.csproj @@ -90,6 +90,7 @@ +