diff --git a/src/Calculator.Shared/CalcManager/CalculatorManager.Interop.cs b/src/Calculator.Shared/CalcManager/CalculatorManager.Interop.cs
index d66d1a09..a0010c12 100644
--- a/src/Calculator.Shared/CalcManager/CalculatorManager.Interop.cs
+++ b/src/Calculator.Shared/CalcManager/CalculatorManager.Interop.cs
@@ -12,88 +12,94 @@ namespace CalculationManager
{
public static class NativeDispatch
{
- [DllImport("CalcManager")]
+#if __IOS__
+ private const string DllPath = "__Internal"; // https://docs.microsoft.com/en-us/xamarin/ios/platform/native-interop
+#else
+ private const string DllPath = "CalcManager";
+#endif
+
+ [DllImport(DllPath)]
public static extern IntPtr CalculatorManager_Create(ref CalculatorManager_CreateParams parms);
- [DllImport("CalcManager")]
+ [DllImport(DllPath)]
public static extern void CalculatorManager_SendCommand(IntPtr nativeManager, Command command);
- [DllImport("CalcManager")]
+ [DllImport(DllPath)]
public static extern void CalculatorManager_SetRadix(IntPtr nativeManager, RADIX_TYPE iRadixType);
- [DllImport("CalcManager")]
+ [DllImport(DllPath)]
public static extern void CalculatorManager_Reset(IntPtr nativeManager, bool clearMemory);
- [DllImport("CalcManager")]
+ [DllImport(DllPath)]
public static extern void CalculatorManager_SetStandardMode(IntPtr nativeManager);
- [DllImport("CalcManager")]
+ [DllImport(DllPath)]
public static extern void CalculatorManager_SetScientificMode(IntPtr nativeManager);
- [DllImport("CalcManager")]
+ [DllImport(DllPath)]
public static extern void CalculatorManager_SetProgrammerMode(IntPtr nativeManager);
- [DllImport("CalcManager")]
+ [DllImport(DllPath)]
public static extern void CalculatorManager_MemorizeNumber(IntPtr nativeManager);
- [DllImport("CalcManager")]
+ [DllImport(DllPath)]
public static extern void CalculatorManager_MemorizedNumberLoad(IntPtr nativeManager, int value);
- [DllImport("CalcManager")]
+ [DllImport(DllPath)]
public static extern void CalculatorManager_MemorizedNumberAdd(IntPtr nativeManager, int value);
- [DllImport("CalcManager")]
+ [DllImport(DllPath)]
public static extern void CalculatorManager_MemorizedNumberSubtract(IntPtr nativeManager, int value);
- [DllImport("CalcManager")]
+ [DllImport(DllPath)]
public static extern void CalculatorManager_MemorizedNumberClear(IntPtr nativeManager, int value);
- [DllImport("CalcManager")]
+ [DllImport(DllPath)]
public static extern void CalculatorManager_MemorizedNumberClearAll(IntPtr nativeManager);
- [DllImport("CalcManager")]
+ [DllImport(DllPath)]
public static extern bool CalculatorManager_IsEngineRecording(IntPtr nativeManager);
- [DllImport("CalcManager")]
+ [DllImport(DllPath)]
public static extern void CalculatorManager_SetMemorizedNumbersString(IntPtr nativeManager);
- [DllImport("CalcManager", CharSet = CharSet.Unicode)]
+ [DllImport(DllPath, CharSet = CharSet.Unicode)]
public static extern string CalculatorManager_GetResultForRadix(IntPtr nativeManager, int radix, int precision);
- [DllImport("CalcManager")]
+ [DllImport(DllPath)]
public static extern void CalculatorManager_SetPrecision(IntPtr nativeManager, int precision);
- [DllImport("CalcManager")]
+ [DllImport(DllPath)]
public static extern void CalculatorManager_UpdateMaxIntDigits(IntPtr nativeManager);
- [DllImport("CalcManager")]
+ [DllImport(DllPath)]
public static extern char CalculatorManager_DecimalSeparator(IntPtr nativeManager);
- [DllImport("CalcManager")]
+ [DllImport(DllPath)]
public static extern bool CalculatorManager_RemoveHistoryItem(IntPtr nativeManager, int uIdx);
- [DllImport("CalcManager")]
+ [DllImport(DllPath)]
public static extern void CalculatorManager_ClearHistory(IntPtr nativeManager);
- [DllImport("CalcManager")]
+ [DllImport(DllPath)]
public static extern int CalculatorManager_MaxHistorySize(IntPtr nativeManager);
- [DllImport("CalcManager")]
+ [DllImport(DllPath)]
public static extern Command CalculatorManager_GetCurrentDegreeMode(IntPtr nativeManager);
- [DllImport("CalcManager")]
+ [DllImport(DllPath)]
public static extern void CalculatorManager_SetInHistoryItemLoadMode(IntPtr nativeManager, bool isHistoryItemLoadMode);
- [DllImport("CalcManager")]
+ [DllImport(DllPath)]
public static extern IntPtr CalculatorManager_GetHistoryItems(IntPtr nativeManager);
- [DllImport("CalcManager")]
+ [DllImport(DllPath)]
public static extern IntPtr CalculatorManager_GetHistoryItemsWithMode(IntPtr nativeManager, CALCULATOR_MODE mode);
- [DllImport("CalcManager")]
+ [DllImport(DllPath)]
public static extern IntPtr CalculatorManager_GetHistoryItem(IntPtr nativeManager, int uIdx);
- [DllImport("CalcManager")]
+ [DllImport(DllPath)]
public static extern CommandType IExpressionCommand_GetCommandType(IntPtr pExpressionCommand);
public delegate IntPtr GetCEngineStringFunc(IntPtr state, IntPtr id);
diff --git a/src/Calculator.iOS/Calculator.iOS.csproj b/src/Calculator.iOS/Calculator.iOS.csproj
index f7371499..5e262fa3 100644
--- a/src/Calculator.iOS/Calculator.iOS.csproj
+++ b/src/Calculator.iOS/Calculator.iOS.csproj
@@ -25,6 +25,7 @@
x86_64
None
true
+ -gcc_flags "-lc++ -lstdc++"
portable
@@ -35,6 +36,7 @@
None
x86_64
false
+ -gcc_flags "-lc++ -lstdc++"
true
@@ -49,6 +51,7 @@
Entitlements.plist
iPhone Developer
true
+ -gcc_flags "-lc++ -lstdc++"
none
@@ -60,6 +63,7 @@
ARM64
false
iPhone Developer
+ -gcc_flags "-lc++ -lstdc++"
none
@@ -104,6 +108,16 @@
+
+
+ Static
+
+
+
+
+ Static
+
+
\ No newline at end of file
diff --git a/src/Calculator.iOS/Native References/arm64/libCalcManager.a b/src/Calculator.iOS/Native References/arm64/libCalcManager.a
new file mode 100644
index 00000000..6df6d533
Binary files /dev/null and b/src/Calculator.iOS/Native References/arm64/libCalcManager.a differ
diff --git a/src/Calculator.iOS/Native References/x86_64/libCalcManager.a b/src/Calculator.iOS/Native References/x86_64/libCalcManager.a
new file mode 100644
index 00000000..1b703ede
Binary files /dev/null and b/src/Calculator.iOS/Native References/x86_64/libCalcManager.a differ