2017-10-25 6 views
0

を使用して、クラスでEmguを使用しているとき、私は奇妙なconfictを発見した「ImageViewerの」C#GTK 2&3競合Emgucv

することは、すべてがうまく動作します。例えば、

using Emgu.CV; 
using Emgu.CV.Util; 
using Emgu.CV.UI; 

namespace TmpTest 
{ 
    class TmpTest 
    { 
     private Mat img = new Mat(); // a non-static class member is OKey 
     public static void Main(string[] arg) 
     { 
      SDKWrapper util = new SDKWrapper(); 
      ImageViewer viewer = new ImageViewer(); 
      VideoCapture capture = new VideoCapture(); 

      Application.Idle += new EventHandler (delegate(object sender, EventArgs e) { 
       Mat read_frame = capture.QueryFrame(); 
       util.processFrame(read_frame); 
       util.drawSkeleton(read_frame); 
       viewer.Image = read_frame; 
      }); 
      viewer.ShowDialog(); 
      return; 
     } 
    } 
} 

以下のようなコードしかし、すぐに、私は静的クラスのメンバを追加すると、例えば、 private static Mat imgprivate Mat imgを変更、私はすぐに私はこの

Gtk-ERROR **: GTK+ 2.x symbols detected. Using GTK+ 2.x and GTK+ 3 in the same process is not supported 

のようなランタイムエラーを得ましたubuntu 16.04とmonodevelopmentを使って、誰が何が起こったのか、それをどのように解決するのかを知っていますか?

答えて

0

Emgu CVはOpenCVへの.Netラッパーです。使用しているOpenCVのバージョンによっては、GTK 2またはGTK 3に対してビルドすることもできますが、通常はGTK 2には反対です。しかし、アプリケーションではGTK 2とGTK 3を同時に使用することはできません。ですから、私はOpenCvの部分がGTK 2を使い、GTK 3を引っ張っているものがあると思います。使用しているemgu CVのバイナリがどのライブラリに依存しているかを確認してください。

関連する問題