c ++ вызывает функцию, связанную с opencv, и упакован в dll, c # не может вызвать ее - PullRequest
1 голос
/ 06 ноября 2019

c ++ вызывается dll после вызова функции, связанной с opencv, c # не может ее вызвать. Но если я не использую opencv в моей dll, она работает хорошо. Как функция imread в пакете opencv.

Когда я упаковал dll, я использовал opencv.dll и его файл lib. В C ++ их связанная среда была настроена. Я не знаю, нужно ли c # конфигурировать соответствующую среду opencv или какие другие методы нужны.

[c++ code]-Packaged into test.dll
#include<memory.h>
#include<time.h>
#include<math.h>
#include<vector>
#include"test.h"

#pragma comment(lib,"opencv_world310.lib")

using namespace cv;
using namespace std;

extern "C" __declspec(dllexport) int test();
int test()
{
    Mat readImage = imread("D:\\pic\\pic1.JPG");
    int rowPic = readImage.rows;
    return rowPic;
}

[c# code]-Call the test.dll
namespace testOilDetectionCsharp
{
    public sealed partial class MainPage : Page
    {
        [DllImport("test.dll", CharSet = CharSet.Unicode)]
        extern static int test();

        public MainPage()
        {
            this.InitializeComponent();
        }

        private void Button_Click(object sender, RoutedEventArgs e)
        {
            unsafe
            {
                int num = test();
                textBox.Text = num.ToString();
            }
        }

    }
}

, как и в тестовой функции, у меня есть путь к картинке, но в c # вызывается функциятеоретически вернет количество строк на изображении. Это не вариант. Функция imread в opencv не работает. СПАСИБО!

1 Ответ

0 голосов
/ 11 ноября 2019

Судя по всему, это dll не найдено исключение. Я сталкивался со многими из них. Вероятно, вы можете понять это, запустив EventViewer (это утилита внутри Windows). Просмотр событий будет иметь запись о том, что является отсутствующей DLL. Вероятно, копирование всех библиотек opencv в путь выполнения решит проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...