问题
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.
来源:https://stackoverflow.com/questions/22922077/cant-start-gtk-mono-app-without-ide-unable-to-load-dll-intl