sdk开发dll里//#define DLLDIR __declspec(dllimport)需要在调用dll函数要函数名添加此句???
SDK dll
#define DLLDIR __declspec(dllimport) // export DLL information
//函数指针的SetBMPCallback使用的回调函数
typedef void ( CALLBACK *BMPCallback)(unsigned long callbackID, BITMAPINFO * info, unsigned char *data, unsigned long size);
int DLLDIR SetBMPCallback(int hd, unsigned long callbackID, BMPCallback callback);
调用dll时,
//回调函数
void CALLBACK mybmpCallback(unsigned long callbackID, BITMAPINFO * info, unsigned char *data, unsigned long size)
{
BITMAPFILEHEADER bfh = {0};
bfh.bfType=0x4D42;
bfh.bfOffBits = sizeof(BITMAPINFOHEADER) + sizeof(BITMAPFILEHEADER);
bfh.bfSize = bfh.bfOffBits + info->bmiHeader.biSizeImage; FILE *ofile = fopen("image.bmp", "wb");
fwrite(&bfh, sizeof(bfh), 1, ofile);
fwrite(&info->bmiHeader, sizeof(info->bmiHeader), 1, ofile); fwrite(data, 1, info->bmiHeader.biSizeImage, ofile);
fclose(ofile);
}
//自己写回调函数的地址赋值给p(dll里的函数指针类型)
BMPCallback p =mybmpCallback;
//下面是调用SetBMPCallback函数,还有要加 __declspec(dllimport)吗???打断点回调函数mybmpCallback无法调用
typedef int (CALLBACK* PF_SetBMPCallback)(int hd, unsigned long callbackID, BMPCallback callback);
PF_SetBMPCallback SetBMPCallback2 = (PF_SetBMPCallback)GetProcAddress(hh, "SetBMPCallback");
SetBMPCallback2(hd,1,p);