Awesium Linux C# System.DllNotFoundException: 기본 Awesomium 라이브러리에 대한 경로를 찾을 수 없습니다.

Awesium Linux C# System.DllNotFoundException: 기본 Awesomium 라이브러리에 대한 경로를 찾을 수 없습니다.
I am  running Ubuntu 16.04 and the Awesomium Web Browser C# Framework as well as Mono 4.4.2 with the environment variable MONO_PATH set to /usr/lib/mono/4.5 and the environment variable LD_LIBRARY_PATH set to /home/frankc/EnvironmentX64/Hybrid/Debug.

디렉토리 폴더 /home/frankc/EnvironmentX64/Hybrid/Debug dll 어셈블리 awesomium, libffmpegsumo.so, libawesomium-1-7.so.0.0, awesomium_process, Awesomium.Mono.dll, Awesomium.Core의 복사본이 있습니다. dll 및 Awesomium.Mono.dll.

다음 C# 테스트 프로그램을 컴파일하면 오류 없이 잘 컴파일됩니다.

// Credit: Awesomium v1.7.2 C# Basic Sample
//         by Perikles C. Stephanidis
using System;
using System.IO;
using Awesomium.Core;
using System.Threading;
using System.Diagnostics;
using System.Reflection;

namespace BasicSample
{
    class Program
    {
        static void Main( string[] args )
        {
            WebCore.Initialize(WebConfig.Default);

            Uri url = new Uri("http://www.google.com");
            Console.WriteLine("WE ARE HERE " + WebCore.PackagePath); 

            using ( WebSession session = WebCore.CreateWebSession(WebPreferences.Default) )
            {
                // WebView implements IDisposable. Here we demonstrate
                // wrapping it in a using statement.
                using ( WebView view = WebCore.CreateWebView( 1100, 600, session ) )
                {
                    bool finishedLoading = false;
                    bool finishedResizing = false;

                    Console.WriteLine( String.Format( "Loading: {0} ...", url ) );

                    // Load a URL.
                    view.Source = url;

                    // This event is fired when a frame in the
                    // page finished loading.
                    view.LoadingFrameComplete += ( s, e ) =>
                    {
                        Console.WriteLine( String.Format( "Frame Loaded: {0}", e.FrameId ) );

                        // The main frame usually finishes loading last for a given page load.
                        if ( e.IsMainFrame )
                            finishedLoading = true;
                    };

                    while ( !finishedLoading )
                    {
                        Thread.Sleep( 100 );
                        // A Console application does not have a synchronization
                        // context, thus auto-update won't be enabled on WebCore.
                        // We need to manually call Update here.
                        WebCore.Update();
                    }

                    // Print some more information.
                    Console.WriteLine( String.Format( "Page Title: {0}", view.Title ) );
                    Console.WriteLine( String.Format( "Loaded URL: {0}", view.Source ) );
                } // Destroy and dispose the view.
           } // Release and dispose the session.            

           // Shut down Awesomium before exiting.
            WebCore.Shutdown();

            Console.WriteLine("Press any key to exit...");
            Console.Read();
        }
    }
}

다음은 컴파일러 명령입니다.

mcs -r:./Awesomium.Mono.dll Test.cs

그러나 mono ./Test.exe를 실행하면 다음 런타임 예외가 발생합니다.

System.DllNotFoundException: Could not locate the path to the native Awesomium library.
  at Awesomium.Core.WebCore.YFqkBlruD () <0x40641080 + 0x00853> in <filename unknown>:0 
  at Awesomium.Core.WebCore.EHyMTEo9AN () <0x4063cc30 + 0x00913> in <filename unknown>:0 
  at Awesomium.Core.WebCore.CreateWebView (Int32 width, Int32 height) <0x4063c9a0 + 0x00073> in <filename unknown>:0 
  at BasicSample.Program.Main (System.String[] args) <0x40620d70 + 0x000bb> in <filename unknown>:0 

또한 mono ./Test.exe를 실행하면 WebCore.PackagePath 문자열이 비어 있음을 알 수 있습니다. 이는 WebCore.PackagePath가 dll 어셈블리 awesomemium의 위치를 ​​가리켜야 하기 때문에 예상한 것과 다릅니다. 또한 WebCore.PackagePath는 get 및 set 속성이 아닌 get 속성이므로 해당 값을 변경할 수 없습니다. System.DllNotFoundException: 기본 Awesomium 라이브러리에 대한 경로를 찾을 수 없음을 수정하기 위해 설정할 수 있는 또 다른 유사한 속성이 있습니까?

GITHUB Awesomium WebBrowser C# 소스 코드를 다운로드했지만 "기본 Awesomium 라이브러리에 대한 경로를 찾을 수 없습니다"라는 문자열을 찾을 수 없습니다.

strace mono ./Test.exe 및 import MONO_LOG_LEVEL=debug mono ./Test.exe는 즉시 명백한 내용을 공개하지 않았습니다.

MonoSystem.DLLNotFoundException의 원인과 해결 방법을 찾을 수 있나요?

오늘 저는 두 개의 Awesomium 웹 브라우저 C++ 테스트 프로그램을 컴파일, 링크 및 실행하고 올바르게 실행되는지 확인할 수 있었습니다.

어떤 도움이라도 대단히 감사하겠습니다.

답변1

지난 48시간 동안 저는 Awesomium의 C# NET 제품에 많은 구성 문제가 있고 DLLImports가 지속적으로 변경되어 지원 비용을 지불하지 않으면 거의 쓸모가 없다는 것을 발견했습니다.

우리 설계자는 C#을 사용하여 웹 브라우저를 생성할 것을 제안했는데, 방금 성공적으로 테스트했습니다.

using System;
using System.IO;
using System.Threading;
using System.Diagnostics;
using System.Reflection;

Process proc = new Process ();
proc.StartInfo.UseShellExecute = true;
proc.StartInfo.FileName = "http://stackoverflow.com";
proc.Start ();

관련 정보