gpt4 book ai didi

c# - c++调用opencv相关函数并打包成dll,c#调用不了

转载 作者:太空宇宙 更新时间:2023-11-04 12:30:44 42 4
gpt4 key购买 nike

c++在调用opencv相关函数后调用dll,c#调用不了。但是如果我的dll中不使用opencv,它运行良好。就像opencv包中的imread函数一样。

我在打包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();
}
}

}
}

就像测试函数一样,我有pic路径,但是在c#中,调用该函数理论上会返回图像中的行数。不是这种情况。 opencv 中的 imread 函数不起作用。谢谢!

最佳答案

从外观上看,我认为这是一个 dll 未找到异常。我遇到过很多这样的。也许你可以通过运行 EventViewer(它是 Windows 中的一个实用程序)来解决这个问题。事件查看器将有一个关于丢失的 DLL 的条目。可能将所有 opencv dll 复制到执行路径将解决此问题。

关于c# - c++调用opencv相关函数并打包成dll,c#调用不了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58731949/

42 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com