您正在使用vector作为指针。当你需要在Swift中使用它时非常好。
您可以使用void*
代替:
long GrabberInitializeAndProcess(
unsigned char* pbInPixels,
int inStride,
unsigned char* pbOutPixels,
int outStride,
int width,
int height,
Point mqTopLeft,
Size mqSize,
void * pForegroundMarks,
void * pBackgroundMarks,
void* pGrabberState);
而且在实施执行类型转换。
或者,如果你需要的类型安全,你可以白:
typedef struct _vectorOfPolylineElement *vectorOfPolylineElementPtr;
long GrabberInitializeAndProcess(
unsigned char* pbInPixels,
int inStride,
unsigned char* pbOutPixels,
int outStride,
int width,
int height,
Point mqTopLeft,
Size mqSize,
vectorOfPolylineElementPtr pForegroundMarks,
vectorOfPolylineElementPtr pBackgroundMarks,
void* pGrabberState);
而且在执行:
typedef struct _vectorOfPolylineElement
{
std::vector<PolylineElement> val;
} *vectorOfPolylineElementPtr;
如果你其实并不需要GrabberInitializeAndProcess载体,只是它的元素,你可以使用内存:
long GrabberInitializeAndProcess(
unsigned char* pbInPixels,
int inStride,
unsigned char* pbOutPixels,
int outStride,
int width,
int height,
Point mqTopLeft,
Size mqSize,
PolylineElement * pForegroundMarks,
size_t foregroundMarksCount,
PolylineElement * pBackgroundMarks,
size_t backgroundMarksCount,
void* pGrabberState);
'NSArray *',你的包装将负责为了弥合这两种类型。 –
Joe
我在包装PolylineElement时遇到了问题(这是一个四个整数的简单结构),但我将其作为一个单独的问题来处理。你想添加你的评论作为答案,我会把它标记为这样吗? – dumbledad