请问C#如何去调C++写的dll
对C++不熟,别人写的模块,我去调。
在vs2003下用C#做界面调C++的模块,他提供了dll lib 和.h
另请问C++中如何调dll(是include .h和引用lib吗?)
不知道怎么调,新手,请指教,感谢!
[解决办法]
IplImage是一个结构,它应该定义在给你的.h文件里。你在C#创建一个一样的结构就可以了,然后在导入函数中把声明换成你的结构。
结构声明时一般需要加[StructLayout(LayoutKind.Sequential)]。在msdn里有C++和C#数据类型的对应表,按照表里的定义你换一下就好了。
[解决办法]
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 */ }