日期:2014-05-18  浏览次数:20811 次

请问C#如何去调C++写的dll
对C++不熟,别人写的模块,我去调。

在vs2003下用C#做界面调C++的模块,他提供了dll lib 和.h

另请问C++中如何调dll(是include .h和引用lib吗?)

不知道怎么调,新手,请指教,感谢!

------解决方案--------------------
IplImage是一个结构,它应该定义在给你的.h文件里。你在C#创建一个一样的结构就可以了,然后在导入函数中把声明换成你的结构。
结构声明时一般需要加[StructLayout(LayoutKind.Sequential)]。在msdn里有C++和C#数据类型的对应表,按照表里的定义你换一下就好了。
------解决方案--------------------
C# code

    struct IplImage
    {
        int Size;        /* sizeof(IplImage) */
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        string ColorModel; /* ignored by OpenCV */
        IntPtr Roi;/* image ROI. if NULL, the whole image is selected */
        IntPtr MaskROI; /* must be NULL */
        IntPtr ImageId;    /* ditto */
        IntPtr TileInfo; /* ditto */
        string ImageData;  /* pointer to aligned image data */
        string ImageDataOrigin; /* pointer to very origin of image data 
                              (not necessarily aligned) - 
                              needed for correct deallocation */
    }