这是问题 - 我需要在C#应用程序中使用一些C图像处理库。 DllImport缺乏经验,现在让我很难受。
我需要使用的功能如下:
IMAGEPROCESS_API const int importImage
(
const unsigned char* image,
const char* xmlInput,
unsigned char** resultImage,
char** xmlOutput
);
因此,它接受原始图像数据,包含参数的xml和图像宽度'高度,然后返回已处理的图像和一些xml报告。
现在我试图像这样接近它:
[DllImport("imageprocess.dll",CallingConvention = CallingConvention.StdCall,EntryPoint = "importImage",CharSet=CharSet.Ansi)] private static extern int ImportImageNative(IntPtr imageData, String xmlDescriptor, out IntPtr processedImage, out IntPtr xmlOut);
但没有任何成功。
有任何建议应该怎么做?
编辑: 仍然没有运气(( 现在由凌乱的C ++ CLI完成
答案 0 :(得分:3)
对于输出参数,您应该使用Marshal.PtrToStringAnsi访问返回的数据。
由于原始内存是在非托管API中分配的,因此您仍有责任在适当的时候释放它。
我还认为你应该对前两个参数使用String
,不确定为什么第一个参数是IntPtr
?
答案 1 :(得分:0)
试试这个
[DllImport("imageprocess.dll", CharSet = CharSet.Auto, SetLastError = true)]
static extern int importImage(string imageData, string xmlDescriptor, out string processedImage, out string xmlOut);