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 @@
+