Hi PJSIP Mailing List,
I am having difficulty integrating PJSIP Native libraries into my
Xamarin.iOS project. I have completed the following steps, but am
encountering a System.TypeInitializationException when attempting to create
a new Endpoint instance. I do not understand where in the library it would
attempt to JIT on iOS. Any assistance is much appreciated.
Libraries / SDK versions:
- Opus Codec Library 1.1.4
- PJSIP 2.6 (PJSUA2)
- Xamarin Studio 6.3
- Xcode 8.3.2
- iOS SDK 10.3
Built Opus codec library ([PJSIP + Opus](
https://trac.pjsip.org/repos/ticket/1904))
Built PJSIP library ([PJSIP Getting Started iPhone](
https://trac.pjsip.org/repos/wiki/Getting-Started/iPhone))
- Built each architecture individually
ARCHS="arm64 armv7 armv7s i386 x86_64"
- Unified all architectures
lipo -arch armv7 armv7/$filename -arch armv7s armv7s/$filename -arch arm64 arm64/$filename -arch i386 i386/$filename -arch x86_64 x86_64/$filename -create -output unified/$filename
Added PJSUA2 to Xamarin.iOS project ([Xamarin Native Libraries](
https://developer.xamarin.com/guides/ios/advanced_topics/native_interop/))
- Added PJSUA2 Headers
/pjsip/unified/pjsua2/*.cs
- Added PJSUA2 Libraries
/pjsip/unified/*.a
(skipped libpjsdp.a, since already linked in
libpsjua.a)
- Added mtouch extra arguments
-cxx -gcc_flags "-L${ProjectDir}/lib/ -lg7221codec-apple-darwin_ios -force_load ${ProjectDir}/lib/libg7221codec-apple-darwin_ios.a -lgsmcodec-apple-darwin_ios -force_load ${ProjectDir}/lib/libgsmcodec-apple-darwin_ios.a -lilbccodec-apple-darwin_ios -force_load ${ProjectDir}/lib/libilbccodec-apple-darwin_ios.a -lpj-apple-darwin_ios -force_load ${ProjectDir}/lib/libpj-apple-darwin_ios.a -lpjlib-util-apple-darwin_ios -force_load ${ProjectDir}/lib/libpjlib-util-apple-darwin_ios.a -lpjmedia-apple-darwin_ios -force_load ${ProjectDir}/lib/libpjmedia-apple-darwin_ios.a -lpjmedia-audiodev-apple-darwin_ios -force_load ${ProjectDir}/lib/libpjmedia-audiodev-apple-darwin_ios.a -lpjmedia-codec-apple-darwin_ios -force_load ${ProjectDir}/lib/libpjmedia-codec-apple-darwin_ios.a -lpjmedia-videodev-apple-darwin_ios -force_load ${ProjectDir}/lib/libpjmedia-videodev-apple-darwin_ios.a -lpjnath-apple-darwin_ios -force_load ${ProjectDir}/lib/libpjnath-apple-darwin_ios.a -lpjsip-apple-darwin_ios -force_load ${ProjectDir}/lib/libpjsip-apple-darwin_ios.a -lpjsip-simple-apple-darwin_ios -force_load ${ProjectDir}/lib/libpjsip-simple-apple-darwin_ios.a -lpjsip-ua-apple-darwin_ios -force_load ${ProjectDir}/lib/libpjsip-ua-apple-darwin_ios.a -lpjsua-apple-darwin_ios -force_load ${ProjectDir}/lib/libpjsua-apple-darwin_ios.a -lpjsua2-apple-darwin_ios -force_load ${ProjectDir}/lib/libpjsua2-apple-darwin_ios.a -lpjsua2_wrap -force_load ${ProjectDir}/lib/libpjsua2_wrap.a -lresample-apple-darwin_ios -force_load ${ProjectDir}/lib/libresample-apple-darwin_ios.a -lspeex-apple-darwin_ios -force_load ${ProjectDir}/lib/libspeex-apple-darwin_ios.a -lsrtp-apple-darwin_ios -force_load ${ProjectDir}/lib/libsrtp-apple-darwin_ios.a -lwebrtc-apple-darwin_ios -force_load ${ProjectDir}/lib/libwebrtc-apple-darwin_ios.a -lyuv-apple-darwin_ios -force_load ${ProjectDir}/lib/libyuv-apple-darwin_ios.a -lopus -force_load ${ProjectDir}/lib/libopus.a"
Built Debug -> iOS Device
- Compiles and Links without Errors
Ran built project
-
Encounter TypeInitializationException upon instantiating an Endpoint
-
Pjsua2Manager.cs:164
var mEP = new Endpoint();
-
Exception
System.TypeInitializationException: The type initializer for "pjsua2PINVOKE" threw an exception. ---> System.TypeInitializationException: The type initializer for "SWIGExceptionHelper" threw an exception. ---> System.ExecutionEngineException: Attempting to JIT compile method "(wrapper native-to-managed) pjsua2PINVOKE/SWIGExceptionHelper:SetPendingApplicationException (intptr)" while running with --aot-only. See http://docs.xamarin.com/ios/about/limitations for more information.
at (wrapper managed-to-native)
System.Object:__icall_wrapper_mono_delegate_to_ftnptr (object)
at (wrapper managed-to-native)
pjsua2PINVOKE+SWIGExceptionHelper:SWIGRegisterExceptionCallbacks_pjsua2
(pjsua2PINVOKE/SWIGExceptionHelper/ExceptionDelegate,pjsua2PINVOKE/SWIGExceptionHelper/ExceptionDelegate,pjsua2PINVOKE/SWIGExceptionHelper/ExceptionDelegate,pjsua2PINVOKE/SWIGExceptionHelper/ExceptionDelegate,pjsua2PINVOKE/SWIGExceptionHelper/ExceptionDelegate,pjsua2PINVOKE/SWIGExceptionHelper/ExceptionDelegate,pjsua2PINVOKE/SWIGExceptionHelper/ExceptionDelegate,pjsua2PINVOKE/SWIGExceptionHelper/ExceptionDelegate,pjsua2PINVOKE/SWIGExceptionHelper/ExceptionDelegate,pjsua2PINVOKE/SWIGExceptionHelper/ExceptionDelegate,pjsua2PINVOKE/SWIGExceptionHelper/ExceptionDelegate)
at pjsua2PINVOKE+SWIGExceptionHelper..cctor () [0x00126] in
/Voip.iOS/lib/pjsua2/pjsua2PINVOKE.cs:104
--- End of inner exception stack trace ---
at (wrapper managed-to-native)
System.Object:__icall_wrapper_mono_generic_class_init (intptr)
at pjsua2PINVOKE..cctor () [0x00000] in
/Voip.iOS/lib/pjsua2/pjsua2PINVOKE.cs:124
--- End of inner exception stack trace ---
at Endpoint..ctor () [0x00001] in
/Voip.iOS/lib/pjsua2/Endpoint.cs:48
at Voip.iOS.Main.InCall.Pjsua2Manager._InitLibrary () [0x00013]
in Voip.iOS/Main/InCall/Pjsua2Manager.cs:164
Hi PJSIP Mailing List,
I am having difficulty integrating PJSIP Native libraries into my
Xamarin.iOS project. I have completed the following steps, but am
encountering a System.TypeInitializationException when attempting to create
a new Endpoint instance. I do not understand where in the library it would
attempt to JIT on iOS. Any assistance is much appreciated.
## Libraries / SDK versions:
* Opus Codec Library 1.1.4
* PJSIP 2.6 (PJSUA2)
* Xamarin Studio 6.3
* Xcode 8.3.2
* iOS SDK 10.3
## Built Opus codec library ([PJSIP + Opus](
https://trac.pjsip.org/repos/ticket/1904))
## Built PJSIP library ([PJSIP Getting Started iPhone](
https://trac.pjsip.org/repos/wiki/Getting-Started/iPhone))
* Built each architecture individually
`ARCHS="arm64 armv7 armv7s i386 x86_64"`
* Unified all architectures
`lipo -arch armv7 armv7/$filename -arch armv7s armv7s/$filename -arch arm64
arm64/$filename -arch i386 i386/$filename -arch x86_64 x86_64/$filename
-create -output unified/$filename`
## Added PJSUA2 to Xamarin.iOS project ([Xamarin Native Libraries](
https://developer.xamarin.com/guides/ios/advanced_topics/native_interop/))
* Added PJSUA2 Headers
`/pjsip/unified/pjsua2/*.cs`
* Added PJSUA2 Libraries
`/pjsip/unified/*.a` (skipped libpjsdp.a, since already linked in
libpsjua.a)
* Added mtouch extra arguments
`-cxx -gcc_flags "-L${ProjectDir}/lib/ -lg7221codec-apple-darwin_ios
-force_load ${ProjectDir}/lib/libg7221codec-apple-darwin_ios.a
-lgsmcodec-apple-darwin_ios -force_load
${ProjectDir}/lib/libgsmcodec-apple-darwin_ios.a
-lilbccodec-apple-darwin_ios -force_load
${ProjectDir}/lib/libilbccodec-apple-darwin_ios.a -lpj-apple-darwin_ios
-force_load ${ProjectDir}/lib/libpj-apple-darwin_ios.a
-lpjlib-util-apple-darwin_ios -force_load
${ProjectDir}/lib/libpjlib-util-apple-darwin_ios.a
-lpjmedia-apple-darwin_ios -force_load
${ProjectDir}/lib/libpjmedia-apple-darwin_ios.a
-lpjmedia-audiodev-apple-darwin_ios -force_load
${ProjectDir}/lib/libpjmedia-audiodev-apple-darwin_ios.a
-lpjmedia-codec-apple-darwin_ios -force_load
${ProjectDir}/lib/libpjmedia-codec-apple-darwin_ios.a
-lpjmedia-videodev-apple-darwin_ios -force_load
${ProjectDir}/lib/libpjmedia-videodev-apple-darwin_ios.a
-lpjnath-apple-darwin_ios -force_load
${ProjectDir}/lib/libpjnath-apple-darwin_ios.a -lpjsip-apple-darwin_ios
-force_load ${ProjectDir}/lib/libpjsip-apple-darwin_ios.a
-lpjsip-simple-apple-darwin_ios -force_load
${ProjectDir}/lib/libpjsip-simple-apple-darwin_ios.a
-lpjsip-ua-apple-darwin_ios -force_load
${ProjectDir}/lib/libpjsip-ua-apple-darwin_ios.a -lpjsua-apple-darwin_ios
-force_load ${ProjectDir}/lib/libpjsua-apple-darwin_ios.a
-lpjsua2-apple-darwin_ios -force_load
${ProjectDir}/lib/libpjsua2-apple-darwin_ios.a -lpjsua2_wrap -force_load
${ProjectDir}/lib/libpjsua2_wrap.a -lresample-apple-darwin_ios -force_load
${ProjectDir}/lib/libresample-apple-darwin_ios.a -lspeex-apple-darwin_ios
-force_load ${ProjectDir}/lib/libspeex-apple-darwin_ios.a
-lsrtp-apple-darwin_ios -force_load
${ProjectDir}/lib/libsrtp-apple-darwin_ios.a -lwebrtc-apple-darwin_ios
-force_load ${ProjectDir}/lib/libwebrtc-apple-darwin_ios.a
-lyuv-apple-darwin_ios -force_load
${ProjectDir}/lib/libyuv-apple-darwin_ios.a -lopus -force_load
${ProjectDir}/lib/libopus.a"`
## Built Debug -> iOS Device
* Compiles and Links without Errors
## Ran built project
* Encounter TypeInitializationException upon instantiating an Endpoint
* Pjsua2Manager.cs:164
`var mEP = new Endpoint();`
* Exception
` System.TypeInitializationException: The type initializer for
"pjsua2PINVOKE" threw an exception. --->
System.TypeInitializationException: The type initializer for
"SWIGExceptionHelper" threw an exception. --->
System.ExecutionEngineException: Attempting to JIT compile method "(wrapper
native-to-managed)
pjsua2PINVOKE/SWIGExceptionHelper:SetPendingApplicationException (intptr)"
while running with --aot-only. See
http://docs.xamarin.com/ios/about/limitations for more information.`
at (wrapper managed-to-native)
System.Object:__icall_wrapper_mono_delegate_to_ftnptr (object)
at (wrapper managed-to-native)
pjsua2PINVOKE+SWIGExceptionHelper:SWIGRegisterExceptionCallbacks_pjsua2
(pjsua2PINVOKE/SWIGExceptionHelper/ExceptionDelegate,pjsua2PINVOKE/SWIGExceptionHelper/ExceptionDelegate,pjsua2PINVOKE/SWIGExceptionHelper/ExceptionDelegate,pjsua2PINVOKE/SWIGExceptionHelper/ExceptionDelegate,pjsua2PINVOKE/SWIGExceptionHelper/ExceptionDelegate,pjsua2PINVOKE/SWIGExceptionHelper/ExceptionDelegate,pjsua2PINVOKE/SWIGExceptionHelper/ExceptionDelegate,pjsua2PINVOKE/SWIGExceptionHelper/ExceptionDelegate,pjsua2PINVOKE/SWIGExceptionHelper/ExceptionDelegate,pjsua2PINVOKE/SWIGExceptionHelper/ExceptionDelegate,pjsua2PINVOKE/SWIGExceptionHelper/ExceptionDelegate)
at pjsua2PINVOKE+SWIGExceptionHelper..cctor () [0x00126] in
/Voip.iOS/lib/pjsua2/pjsua2PINVOKE.cs:104
--- End of inner exception stack trace ---
at (wrapper managed-to-native)
System.Object:__icall_wrapper_mono_generic_class_init (intptr)
at pjsua2PINVOKE..cctor () [0x00000] in
/Voip.iOS/lib/pjsua2/pjsua2PINVOKE.cs:124
--- End of inner exception stack trace ---
at Endpoint..ctor () [0x00001] in
/Voip.iOS/lib/pjsua2/Endpoint.cs:48
at Voip.iOS.Main.InCall.Pjsua2Manager._InitLibrary () [0x00013]
in Voip.iOS/Main/InCall/Pjsua2Manager.cs:164