Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
导入VC++;DLL转换为C#代码_C#_Visual C++_Opencv_Dllimport - Fatal编程技术网

导入VC++;DLL转换为C#代码

导入VC++;DLL转换为C#代码,c#,visual-c++,opencv,dllimport,C#,Visual C++,Opencv,Dllimport,我正在构建一个C#应用程序。我导入了一个VC++DLL,它使用openCV进行图像比较。 我需要在openCV中访问的函数原型是 bool dTestAutomation_ImgCmp(IplImage*img1,IplImage*img2,int归一化值,int公差) C#中的图像存储为位图 如何将这些位图传递到DLL中? 我目前使用的代码是 public class DLL { [DllImport("DGTestAutomation_DLL.dll", CharSet = Char

我正在构建一个C#应用程序。我导入了一个VC++DLL,它使用openCV进行图像比较。 我需要在openCV中访问的函数原型是
bool dTestAutomation_ImgCmp(IplImage*img1,IplImage*img2,int归一化值,int公差)

C#中的图像存储为位图 如何将这些位图传递到DLL中? 我目前使用的代码是

public class DLL
{
    [DllImport("DGTestAutomation_DLL.dll", CharSet = CharSet.Unicode, SetLastError = true)]
    public static extern bool DGTestAutomation_ImgCmp(
         [MarshalAs(UnmanagedType.IPLImage)]Bitmap bmp1,
         [MarshalAs(UnmanagedType.IPLImage)]Bitmap bmp2, 
         int normalization_val, int tolerance);
}
调用DLL

bool check = DLL.DGTestAutomation_ImgCmp(bmp1, bmp2, 0, 9);
错误

'System.Runtime.InteropServices.UnmanagedType'


我刚刚开始学习DLL的东西。我们将不胜感激。谢谢你的/P>对于相当复杂的API,编写C++ C++库的C++/CLI包装可能更容易。这样,您就有了一个项目,其中两种类型(.NET和C++)都是有效的,您可以在它们之间进行转换,而不必使用所有的“邪恶”指针算法和C#中的句柄转换。我原以为可以避免创建包装器,但指针算法似乎比我预期的更“邪恶”。我正在寻找是否有任何方法可以避免创建包装。看起来这是一个更好的解决方案。感谢您可能想考虑使用OpenCV功能,它是OpenCV上的.NET包装器。