Can't start Gtk# Mono App without IDE (Unable

2019-08-30 08:52发布

问题:

Some Background information:

  • Cross-Platform-Desktop-App written in C# with gtk# and mono.
  • Target Framework: Mono / .Net 4.5
  • Runtime Environment: Microsoft .NET

Problem

I can build / debug / run the project in Xamarin Studio or Visual Studio 2012 perfectly fine.
But whenever I try to start a debug/release build without it (open .exe), my app doesn't start at all.

I tried HomeStream.exe 2> error.log as stated here.

And error.log contained the following information:

Unhandled Exception: System.DllNotFoundException: Unable to load DLL "intl": The    specified module could not be found. (Exception from HRESULT: 0x8007007E).
at Mono.Unix.Catalog.gettext(IntPtr instring)
at Mono.Unix.Catalog.GetString(String s)
at MainWindow.Build() in g:\Users\Eric\Dropbox\Projekte\HomeStream\HomeStream\gtk-gui\MainWindow.cs:Line 35.
at MainWindow..ctor() in g:\Users\Eric\Dropbox\Projekte\HomeStream\HomeStream\MainWindow.cs:Line 22.
at HomeStream.HomeStreamApp..ctor() in g:\Users\Eric\Dropbox\Projekte\HomeStream\HomeStream\HomeStreamApp.cs:Line 67.
at HomeStream.HomeStreamApp.Main(String[] args) in g:\Users\Eric\Dropbox\Projekte\HomeStream\HomeStream\HomeStreamApp.cs:Line 47.

Question

So my question is: what kind of DLL is "intl"?
And why is my app able start in an IDE without it if it's so important?

回答1:

Using Gettext internationalization means your software has a dependency on Mono.Unix, which depends on some native Unix libraries. Some of those libraries have been made available by some developers for the Windows platform. For example you have the MinGW or Cygwin projects to obtain them, or the GnuWin32 project which is the first hit on Google. Try to obtain a libintl.dll that works on Windows, and if that fails to load, then post a new stackoverflow question.