C++ EXE转DLL

来源:百度知道 编辑:UC知道 时间:2024/09/28 14:15:32
我有一个 SDI 的EXE。
是关于图像处理的 判断图像倾斜角度。
想转成DLL。

有谁能 帮忙 改一下。
要求是 注释部分 要写的 详细。
其他的要求 可以QQ联系:44975365
extern "C" __declspec(dllexport) float pic()
{
double m;
float value;
const char* lpszName = "c:\\test.bmp";
CFileFind bmpfile;
HBITMAP hBitmap;
LPSTR lpDIB;
LPSTR lpDIBBits;
BOOL bFind = bmpfile.FindFile("C:\\test.bmp");
if (!bFind)
{
MessageBox(NULL, "照片文件不存在!", "系统提示", MB_ICONINFORMATION | MB_OK);
}
hBitmap = (HBITMAP)LoadImage(NULL, lpszName, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE | LR_CREATEDIBSECTION | LR_DEFAULTSIZE);
lpDIB = (LPSTR)::GlobalLock((HGLOBAL)hBitmap);
lpDIBBits =FindDIBBits(lpDIB);

Gray24Bits(lpDIB);//24位图灰度化

Binaryzation(lpDIB);//二值化

ContourDIB(lpDIBBits, WIDTHBYTES(DIBWidth(lpDIB) * 8), DIBHeight(lpDIB)); //选取轮廓

用EDITBIN。EXE和DLL只是文件头里一个BIT的内容不一样。

如果你的源码里面没有__declspec(dllexport)之类的东西,或者你链接时没有用DEF文件,那你的EXE没有办法转成DLL;转成了也没有用的。因为DLL的用处就在于可以export API。

如果有代码的话,转dll是很方便的,我看了你上面的代码,上面的那个路径需要修改一下,要不然就不能通用了,还有里面的几个函数,可以做成dll的内部的调用函数,不输出就可以了。