簡體   English   中英

使用Emgucv時C#GTK 2和3發生沖突

[英]c# GTK 2 & 3 conflict when using Emgucv

當將Emgu與類'ImageViewer'一起使用時,我發現了一個奇怪的沖突

當我沒有靜態的類成員時,一切正常。 例如下面的代碼

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 Mat img更改為private static 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,有人知道發生了什么事以及如何解決它?

Emgu CV是OpenCV的.Net包裝器。 根據您使用的OpenCV版本,它可以針對GTK 2或GTK 3構建,但通常針對GTK2。但是,應用程序不能同時使用GTK 2和GTK 3。 因此,我認為OpenCv部分使用GTK 2,而您還有其他方面可以使用GTK3。您應該檢查所使用的emgu CV二進制文件依賴於哪些庫。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM