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 не работает. СПАСИБО!