Допустим, вы хотите создать оболочку для создания и удаления QImage
, это можно сделать примерно так:
В вашем заголовочном файле:
typedef void *my_qimage_t;
extern "C" my_qimage_t my_create_qimage(int width, int height);
extern "C" void my_delete_qimage(my_qimage_t image);
И в вашемисходный файл:
extern "C" my_qimage_t my_create_qimage(int width, int height)
{
QImage *qimage = new Qimage(width, height);
return static_cast<my_qimage_t>(qimage);
}
extern "C" void my_delete_qimage(my_qimage_t image);
{
QImage *qimage = static_cast<QImage *>(image);
delete qimage;
}
Тип my_qimage_t
- это, с точки зрения вызывающих, черный ящик.Все манипуляции должны выполняться через вашу библиотеку, передавая этот непрозрачный указатель.