Help me to correct this exception, idk what's that. I couldn't find any information about that. What do I need to do?
using System;
using Spire.Doc;
using Spire.Doc.Documents;
namespace TOC
{
class MainClass
{
public static void Main (string[] args)
{
Document document = new Document();
}
}
}
Unhandled Exception:
System.TypeLoadException: Could not load type 'Spire.Doc.Document'
from assembly 'Spire.Doc, Version=5.2.48.3040, Culture=neutral,
PublicKeyToken=663f351905198cb3'.
[ERROR] FATAL UNHANDLED EXCEPTION: System.TypeLoadException:
Could not load type 'Spire.Doc.Document' from assembly
'Spire.Doc, Version=5.2.48.3040, Culture=neutral,
PublicKeyToken=663f351905198cb3'.
I tried to create the solution again, then the problem disappeared and appear another one.
Unhandled Exception:
System.InvalidProgramException: Invalid IL code in
Spire.Doc.Document:ᜤ (): IL_0003: pop
at Spire.Doc.Document..ctor () [0x00000] in <filename unknown>:0
at TOC.MainClass.Main (System.String[] args) [0x00001] in
/Users/mac/Documents/Csharp/TOC/Program.cs:11
[ERROR] FATAL UNHANDLED EXCEPTION: System.InvalidProgramException:
Invalid IL code in Spire.Doc.Document:ᜤ (): IL_0003: pop
at Spire.Doc.Document..ctor () [0x00000] in <filename unknown>:0
at TOC.MainClass.Main (System.String[] args) [0x00001] in
/Users/mac/Documents/Csharp/TOC/Program.cs:11
It looks like so weird...
You have to contact Spire.Doc vendor as,
Mono CLR is different from .NET CLR, and therefore the obfuscated assembly optimized for .NET might not work for Mono. They should provide you probably another obfuscated version.
Mono API is not 100% the same as .NET API, so you need the vendor to confirm that they fully test the product against Mono.
Don't simply rely on MoMA for compatibility testing. That's only a prototype and it only provides very basic functionality.
Related
Researched this issue many times but didn't found solution of it. Working with xamarin forms version 5.0.0.2012, on win 10 os (saw many solutions for mac or linux but didn't found any for windows), using PCSC library version 5.0.0. Trying to invoke context.Establish method while debugging on Android 8.0:
public SimpleReader(ISCardContext context, bool releaseContextOnDispose = false)
{
if (context == null)
{
context = (ISCardContext) new SCardContext();
context.Establish(SCardScope.System);
releaseContextOnDispose = true;
}
this._context = context;
this._reader = (ISCardReader) new SCardReader(context);
this._releaseContextOnDispose = releaseContextOnDispose;
this._disconnectReaderOnDispose = true;
}
When, exception occur with message below:
System.DllNotFoundException: libpcsclite.so.1 assembly:<unknown assembly> type:<unknown type> member:(null)
at (wrapper managed-to-native) PCSC.Interop.Linux.LinuxNativeMethods.SCardEstablishContext(intptr,intptr,intptr,intptr&)
at PCSC.Interop.Linux.PCSCliteLinux.EstablishContext (PCSC.SCardScope dwScope, System.IntPtr pvReserved1, System.IntPtr pvReserved2, System.IntPtr& phContext) [0x00006] in C:\Users\danm\src\pcsc-sharp\src\PCSC\Interop\Linux\PCSCliteLinux.cs:39
at PCSC.SCardContext.Establish (PCSC.SCardScope scope) [0x00020] in C:\Users\danm\src\pcsc-sharp\src\PCSC\SCardContext.cs:81
at App1xx.Services.SimpleReader.SimpleReader..ctor (PCSC.ISCardContext context, System.Boolean releaseContextOnDispose) [0x00023] in C:\Users\vzhynkin\source\repos\App1xx\App1xx\App1xx\Services\SimpleReaderLib\SimpleReader.cs:59
at App1xx.Services.SimpleReader.SimpleReader..ctor () [0x00000] in C:\Users\vzhynkin\source\repos\App1xx\App1xx\App1xx\Services\SimpleReaderLib\SimpleReader.cs:70
at App1xx.Services.UaIdRLib.IdCardReader.connect () [0x00002] in C:\Users\vzhynkin\source\repos\App1xx\App1xx\App1xx\Services\UaIdRLib\IdCardReader.cs:371
at App1xx.Views.AboutPage.OnButtonClicked (System.Object sender, System.EventArgs args) [0x0000f] in C:\Users\vzhynkin\source\repos\App1xx\App1xx\App1xx\Views\AboutPage.xaml.cs:22
at Xamarin.Forms.Button.Xamarin.Forms.Internals.IButtonElement.PropagateUpClicked () [0x00000] in D:\a\1\s\Xamarin.Forms.Core\Button.cs:187
at Xamarin.Forms.ButtonElement.ElementClicked (Xamarin.Forms.VisualElement visualElement, Xamarin.Forms.Internals.IButtonElement ButtonElementManager) [0x0001f] in D:\a\1\s\Xamarin.Forms.Core\ButtonElement.cs:61
at Xamarin.Forms.Button.SendClicked () [0x00000] in D:\a\1\s\Xamarin.Forms.Core\Button.cs:173
at Xamarin.Forms.Platform.Android.ButtonElementManager.OnClick (Xamarin.Forms.VisualElement element, Xamarin.Forms.IButtonController buttonController, Android.Views.View v) [0x00000] in D:\a\1\s\Xamarin.Forms.Platform.Android\ButtonElementManager.cs:25
at Xamarin.Forms.Platform.Android.FastRenderers.ButtonRenderer.Android.Views.View.IOnClickListener.OnClick (Android.Views.View v) [0x00000] in D:\a\1\s\Xamarin.Forms.Platform.Android\FastRenderers\ButtonRenderer.cs:72
at Android.Views.View+IOnClickListenerInvoker.n_OnClick_Landroid_view_View_ (System.IntPtr jnienv, System.IntPtr native__this, System.IntPtr native_v) [0x00010] in /Users/builder/azdo/_work/278/s/xamarin-android/src/Mono.Android/obj/Release/monoandroid10/android-30/mcw/Android.Views.View.cs:2252
at (wrapper dynamic-method) Android.Runtime.DynamicMethodNameCounter.68(intptr,intptr,intptr)
Does anyone faced with this issue?
The PCSC library does not appear to explicitly support Android. In my experience, nugets that work with Xamarin.Android have explicit dependencies set for the platform, but this one does not.
The library tries to use P/Invoke wrappers around native code. You can see that there are implementations for a number of operating systems here, but I don't see any references to Android. The stack trace shows that the code is deciding to use the Linux wrapper, which makes sense. It's looking for the libpcsclite.so.1 native "C/C++" library, but it's not finding it. That library has a home page that does not reference Android.
The PCSC nuget docs state:
pcsc-sharp does not contain any device drivers. A PC/SC compliant
reader + driver is mandatory.
That's the libpcsclite.so.1 . Either your Android device doesn't provide it, or if it does, it's not in a location that your Android app can find it. My Android device (running Android 9) does not have that library in any of /system/*lib* directories, which means that at least for my device someone would need to compile that native library for the CPU (usually arm64) for the device. If you can either compile the native code yourself or find someone who has, AND the native code supports the reader on your Android device, then you could get the whole thing to work.
I don't have any experience with PCSC myself - just some experience with Xamarin and native libraries.
I am trying following code to convert a dicom file to jpeg:
using System;
using System.IO;
using System.Drawing;
using Dicom.Imaging;
class RnReadDicom{
public static void Main(string[] args){
string fileName = "33141578.dcm";
var image = new DicomImage(fileName);
image.RenderImage().AsSharedBitmap().Save(#"test.jpg");
}}
I am compiling it with following command:
$ mcs a.cs -r:Dicom.Core.dll -r:Dicom.Native.dll -r:System.Drawing
The code compiles without any error but on running the exe file, it gives following error:
$ ./a.exe
Unhandled Exception:
System.TypeInitializationException: The type initializer for 'Dicom.DicomEncoding' threw an exception. ---> System.NullReferenceException: Object reference not set to an instance of an object
at Dicom.IO.IOManager.get_BaseEncoding () [0x00000] in <4b7c269b3e704f3f83dd85bb2721c76a>:0
at Dicom.DicomEncoding..cctor () [0x00000] in <4b7c269b3e704f3f83dd85bb2721c76a>:0
--- End of inner exception stack trace ---
at Dicom.Imaging.DicomImage..ctor (System.String fileName, System.Int32 frame) [0x00000] in <4b7c269b3e704f3f83dd85bb2721c76a>:0
at RnReadDicom.Main (System.String[] args) [0x00006] in <5c119b113a6e4d4b8058662dd31bab14>:0
[ERROR] FATAL UNHANDLED EXCEPTION: System.TypeInitializationException: The type initializer for 'Dicom.DicomEncoding' threw an exception. ---> System.NullReferenceException: Object reference not set to an instance of an object
at Dicom.IO.IOManager.get_BaseEncoding () [0x00000] in <4b7c269b3e704f3f83dd85bb2721c76a>:0
at Dicom.DicomEncoding..cctor () [0x00000] in <4b7c269b3e704f3f83dd85bb2721c76a>:0
--- End of inner exception stack trace ---
at Dicom.Imaging.DicomImage..ctor (System.String fileName, System.Int32 frame) [0x00000] in <4b7c269b3e704f3f83dd85bb2721c76a>:0
at RnReadDicom.Main (System.String[] args) [0x00006] in <5c119b113a6e4d4b8058662dd31bab14>:0
Where is the problem and how can it be solved? Thanks for your help.
Edit: I am having similar problem with another library for which I have posted another question. This is using a different library and the error is also different. I suspect answers to these questions will be different hence these are not duplicate question. Moreover, the other question does not have any answer yet.
This is probably due to the garbage collector destroying the image object. The Bitmap only contains a reference to the pixel data of the image to save space.
This has been described here before: C# System.Drawing.Image.get_Width() throws exception on WinForms form is maximized
To solve this, use it as this:
var image = new DicomImage(fileName);
image.RenderImage().AsClonedBitmap().Save(#"test.jpg");
By cloning, a real copy of the pixel data is performed.
However, it could be sometimes even trickier: If you e. g. use .NET Core as a starting project and the library, which references fo-dicom uses .NET Standard, you have to add either of these to the start of your program:
TranscoderManager.SetImplementation(new MonoTranscoderManager()); // limited codecs, but full .NET Core, runs on Linux. Or:
TranscoderManager.SetImplementation(new DesktopTranscoderManager()); // loads also native dlls, runs on Windows
ImageManager.SetImplementation(new RawImageManager()); // if you need .NET Core, you only have byte arrays
ImageManager.SetImplementation(new WinFormsImageManager()); //if you run Windows and have GDI
NetworkManager.SetImplementation(new DesktopNetworkManager()); // if you want to run dicom services
In Ubuntu, I am calling a C# executable from C using Mono (v3.2.8) and the embedded Mono runtime. When I call the exe (.NET 4.5) from the command line (ie, mono testFile.exe), it works fine. However, when I run my C test program, it throws a C# exception:
libc at at (wrapper managed-to-native) System.Platform:uname (intptr)
at System.Platform.get_IsMacOS () [0x00000] in <filename unknown>:0
at System.Net.WebRequest.GetSystemWebProxy () [0x00000] in <filename unknown>:0
at System.Net.WebRequest.GetDefaultWebProxy () [0x00000] in <filename unknown>:0
at System.Net.WebRequest.get_DefaultWebProxy () [0x00000] in <filename unknown>:0
at System.Net.GlobalProxySelection.get_Select () [0x00000] in <filename unknown>:0
at System.Net.HttpWebRequest..ctor (System.Uri uri) [0x00000] in <filename unknown>:0
at (wrapper remoting-invoke-with-check) System.Net.HttpWebRequest:.ctor (System.Uri)
at System.Net.HttpRequestCreator.Create (System.Uri uri) [0x00000] in <filename unknown>:0
at System.Net.WebRequest.Create (System.Uri requestUri) [0x00000] in <filename unknown>:0
at System.Net.WebRequest.Create (System.String requestUriString) [0x00000] in <filename unknown>:0
at MyClass.MainClass.Main (System.String[] args) [0x00000] in <filename unknown>:0
I've narrowed it down to this one line of code:
WebRequest request = WebRequest.Create("http://www.google.com");
Looking through the call stack and the mono source code, I believe the failure is associated with the calling of the native 'uname' function in libc.so (the CheckOS() function, line 50 of mcs/class/System/System/Platform.cs):
if (uname (buf) == 0) {
I think what is happening is that the p/Invoke layer cannot locate libc.so. However, when I make the same call in my executable's Main() function, it executes fine, I am confused why it works in one place but not the other. It is also strange that the exception message is not a DllNotFoundException, but rather this generic "libc" message (though I have confirmed that I get the same message when I try to p/Invoke with a bogus .so).
My C code:
int main(int argc,const char* argv[]) {
MonoDomain* domain=mono_jit_init("testFile.exe");
MonoAssembly* assembly=mono_domain_assembly_open(domain,"testFile.exe");
MonoImage* image=mono_assembly_get_image(assembly);
const char* args[1];
args[0]="testFile.exe";
mono_jit_exec(domain,assembly,1,(char**) args);
}
My C# code:
namespace MyClass {
class MainClass {
public static void Main (string[] args) {
WebRequest request=WebRequest.Create("http://www.google.com");
}
}
}
gcc compile options are:
gcc cTest.c -I/usr/include/mono-2.0 -DREENTRANT -lmono-2.0 -lm -lrt -ldl -lpthread
mono compile options are:
dmcs -out:testFile.exe -platform:anycpu -sdk:4.5 -target:exe -unsafe+ -main:MyClass.MainClass -reference:System,System.Configuration,System.Data,System.ServiceModel,System.Web,System.Xml *.cs
Update:
I used MONO_LOG_LEVEL and MONO_LOG_MASK to trace the .so search sequence and found that the sequence on the successful call was entirely different from the unsuccessful one. So it is searching, just not very well. I then copied my libc.so.6 to the current directory, renamed to libc.so, and then set LD_LIBRARY_PATH to the same location. This gave me success. I am now having my Linux guru look into what can be done to make this solution more 'correct', but at least I have a running program. This may be the same problem as mine (though the solution's not working for me).
The problem is you are missing the dll mapping (mono_config_parse). The following will work with mono 3.x and 4.x embedding and avoid your libc error.
#include <mono/jit/jit.h>
#include <mono/metadata/environment.h>
#include <stdlib.h>
int
main(int argc, char* argv[]) {
MonoDomain *domain;
const char *file;
int retval;
mono_config_parse (NULL);
domain = mono_jit_init ("textFile.exe");
MonoAssembly *assembly;
assembly = mono_domain_assembly_open (domain, "testFile.exe");
mono_jit_exec (domain, assembly, argc, argv);
retval = mono_environment_exitcode_get ();
mono_jit_cleanup (domain);
return retval;
}
Certain features of the runtime like Dll remapping depend on a configuration file, to load the configuration file, just add:
mono_config_parse (NULL);
Which will load the Mono configuration file (typically /etc/mono/config).
http://www.mono-project.com/docs/advanced/embedding
FYI: On Ubuntu 15.04, I am using:
gcc main.c `pkg-config --cflags --libs mono-2`
You can update that of course to grab the mono-sgen vs. the boehm jit.
On OS-X:
gcc main.c -m32 -framework Foundation -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk \
-lmonosgen-2.0 \
-I/Library/Frameworks/Mono.framework/Headers/mono-2.0 \
-L/Library/Frameworks/Mono.framework/Libraries
I've run into this issue as well. What I noticed is that the mkbundle output lists the assemblies which it embeds, and that the System.Net.dll was not included. After adding it manually on the mkbundle command line, it all worked fine.
The command line I'm using now:
mkbundle my.exe --deps --keeptemp --static --config /etc/mono/configlibc --machine-config /etc/mono/4.5/machine.config System.Net.dll -o bssetup.exe
The configlibc file is a modified copy of the default config file in that directory. The modifications were to remove all mapping lines, except the one for libc.
Hope it helps anyone!
Based on your update, it looks like the application is searching for libc.so instead of libc.so.6. You got it working by manually pointing your LD_LIBRARY_PATH to the current folder having the libc.so that you copied.
Suggestion: ask your Linux guru to symlink libc.so to libc.so.6 in your normal search paths for your application to work.
have been working on a project intended for iOS deployment. Until recently, we have been building and deploying to our client via webplayer. However, I am now attempting to shift to releasing builds on iOS . But, no matter what I try, when I go to compile the project I receive the following error messages:
Cross compilation job Mono.WebBrowser.dll failed.
UnityEngine.UnityException: Failed AOT cross compiler: /Applications/Unity_45/Unity.app/Contents/PlaybackEngines/iOSSupport/Tools/OSX/mono-xcompiler --aot=full,asmonly,nodebug,static,outfile="Mono.WebBrowser.dll.s" "Mono.WebBrowser.dll" current dir : /Users/admin/Desktop/UI_gg_current/Temp/StagingArea/Data/Managed
Env: Apple_PubSub_Socket_Render = '/tmp/launch-7SV8Ex/Render'
LOGNAME = 'admin'
PATH = '/usr/bin:/bin:/usr/sbin:/sbin'
TMPDIR = '/var/folders/7c/s32nkpmx0yvgw4mmw_5vhxx40000gn/T/'
MONO_PATH = '/Users/admin/Desktop/UI_gg_current/Temp/StagingArea/Data/Managed'
SSH_AUTH_SOCK = '/tmp/launch-wpdtRI/Listeners'
USER = 'admin'
GC_DONT_GC = 'yes please'
Apple_Ubiquity_Message = '/tmp/launch-cfnoHv/Apple_Ubiquity_Message'
SHELL = '/bin/bash'
__CF_USER_TEXT_ENCODING = '0x1F5:0:0'
GAC_PATH = '/Users/admin/Desktop/UI_gg_current/Temp/StagingArea/Data/Managed'
HOME = '/Users/admin'
COMMAND_MODE = 'unix2003'
result file exists: False. Timed out: False
stdout:
stderr:
at UnityEditor.MonoProcessUtility.RunMonoProcess (System.Diagnostics.Process process, System.String name, System.String resultingFile) [0x00000] in <filename unknown>:0
at UnityEditor.MonoCrossCompile.CrossCompileAOT (BuildTarget target, System.String crossCompilerAbsolutePath, System.String assembliesAbsoluteDirectory, CrossCompileOptions crossCompileOptions, System.String input, System.String output, System.String additionalOptions) [0x00000] in <filename unknown>:0
at UnityEditor.MonoCrossCompile+JobCompileAOT.ThreadPoolCallback (System.Object threadContext) [0x00000] in <filename unknown>:0
UnityEditor.HostView:OnGUI()
and
Error building Player: UnityException: Cross compilation failed.
I am using Unity 4.5. To date I have : deleted third party dlls (including xml.linq.dll) , removed any instance of Lambda search operators (=>), and deleted the temp folder because I have seen these approaches used in similar situations (I know some aspects of Linq are not supported in iOS cross compile).
I have looked at similar issues such as this one: http://answers.unity3d.com/questions/439367/cross-compilation-failed-csharpdll.html. But, I am so perplexed, because it isn't the CSharp assembly causing my problem (which means it isn't one of my scripts?) I am not sure why it would even be including a WebBrowser.dll for an iOS build. Any help is greatly appreciated, as I feel I have searched far and wide for a resolution with no luck.
See the resolution that for this question here.
I'm trying to make an C# program in mono, so i can port it to Windows, Linux and Mac very easy.
But I've got this error:
System.EntryPointNotFoundException has been thrown
CreateActCtx
System.EntryPointNotFoundException: CreateActCtx
at (wrapper managed-to-native) WebKit.NativeMethods:CreateActCtx (WebKit.NativeMethods/ACTCTX&)
at WebKit.ActivationContext.Initialize () [0x00000] in <filename unknown>:0
at WebKit.WebKitBrowser..ctor () [0x00000] in <filename unknown>:0
at (wrapper remoting-invoke-with-check) WebKit.WebKitBrowser:.ctor ()
at TW_Overview.globalVars..cctor () [0x00000] in <filename unknown>:0
Here is some code:
public static void Main (string[] args)
{
Application.Init ();
MainWindow win = new MainWindow ();
startUp();
win.Show ();
Application.Run ();
}
public static globalFunc globalfunctions = new globalFunc();
public static void startUp ()
{
while (!globalfunctions.isLoggedIn()) {
globalfunctions.showLogin();
}
}
And here's the globalfunc (part of it)
public Boolean isLoggedIn()
{
if (globalVars.isLoggedIn == true)
{
return true;
}
return false;
}
The line that give's the error is:
while (!globalfunctions.isLoggedIn()) {
I've gotten this type of approach in C# Windows Visual Studio, and there it worked. So i don't understand why it isn't working.
Hope that you guys have an clue about what the problem is...
EDIT 1
I've downloaded the latest version of webkit.net link, unpacked it and put all the dllś and folders in the debug folder of my program. I also added an refrence to the dll in the debug folder.
And i've added everywhere this line:
using WebKit;
So i don't know what the problem is. mayby something with static and not static??? i'm not that good at that part...
EDIT 2
The problem is that this isn't supported bij Mono.
After some searching and looking if it's possible to port the webkit to mono, i came across an site that already did that for us.
https://live.gnome.org/WebKitGtk
I cant test it right now, but i think it should work. If not, then i will incontinent searching and update here if i find the solution.