有一将bmp转为jpg的dll,无.h,无.lib,居然被我调用成功了,代码附在后面。
  这个在普通程序中调用没有问题,可是我是在ActiveX中调用,这就碰上了路径问题。我的ActiveX最后要和这个dll打包成cab,数字签名后发布。
  我测试发现(不是用cab,而是两个分开的),在Web上使用时ActiveX找dll居然到桌面上找,我猜可能是IE快捷方式的路径。这样打包后找dll肯定找不到,因为ActiveX和dll都会被下载C:\WINDOWS\Downloaded Program Files路径下。
  我想用静态链接应该不会出现路径的问题,但没有.h,连.lib都没有,能实现静态链接吗?
  当然,有其它dll或能提供bmp到jpg的类源码也可以,要VC++6的,不要c的和VC++.net的。[email protected]附:动态链接代码
typedef  bool(__stdcall CHANGE)(char *,char *);
void CJpeg::BmpToJpeg(CString Bmp, CString Jpeg)
{
HINSTANCE hInst;
CHANGE *pFunc;
hInst = ::LoadLibrary("jpgdll.dll");
pFunc = (CHANGE*)::GetProcAddress(hInst, "BmpToJpg");
pFunc(Bmp.GetBuffer(Bmp.GetLength()), Jpeg.GetBuffer(Jpeg.GetLength()));
Bmp.ReleaseBuffer();
Jpeg.ReleaseBuffer();
::FreeLibrary(hInst);
}

解决方案 »

  1.   

    静态连接必须要有lib文件,你可以用CImage::Save函数来进行转换
      

  2.   

    CBitmap bmp;
    bmp.LoadBitmap(IDB_BITMAP1);CImage image;
    image.Attach(bmp);image.Save("c:\\aa", ImageFormatJPEG);
      

  3.   

    你在写个DLL,动态加载这个DLL不就可以了,桥接一下
      

  4.   

    mynamelj(夏娃的诱惑) :
    晕,就这么简单?CImage是那里的类?我的msdn中怎么查不到?DarknessTM(家里蹲) :
    桥接我的dll调用那个dll不是一样有路径问题?我是在Web上用啊。
      

  5.   

    说明一下,我是用的VC6写的ActiveX,不是VC++.net,因为客户端运行,不能要求用户安装.netFramework,夏娃的诱惑说得应该是.net的类吧。
      

  6.   

    #include <atlimage.h>CImage是atl库中的类
      

  7.   

    mynamelj(夏娃的诱惑):不行,#include找不到那个文件。
    你在VC6下用过吗?打的补丁几?
      

  8.   

    可能你的电脑没有装atl库吧,一般的VC默认安装都有的。
      

  9.   

    找到了装目录就好办了,在VC的环境设置中把Include,lib,bin添加进去。
      

  10.   

    是不是被.net的覆盖掉了,它们有相同的类我从安装盘检查已经装了,但却找不到安装目录。没有改动它又不给我修复。
      

  11.   

    这个目录下并没有你说得那个类:
    D:\Program Files\Microsoft Visual Studio\VC98\ATL\Include
      

  12.   

    vs2003中的vc7.0(不用是.net工程)是默认带了CImage这个类的,vc6.0好像没有。
    使用这个类,需要gdipuls.dll,2000以上系统似乎都已经有这个dll了,但98没有。另外问个问题,CImage::Save()这个函数,如果是保存到文件的话,第二个参数可以是NULL。
    但如果要在内存中处理,也就是保存到IStream*里面的话,第二个参数要怎么取得啊?ImageFormatJPEG认不出来啊?
      

  13.   

    bmp转jpg完全可以用GDI+,这样什么问题不都解决了吗。
      

  14.   

    另外,有个小工具叫做dll2lib,可以从dll直接生成lib,你用生成的这个lib或许就可以静态链接到这个dll了。
      

  15.   

    建议使用GDI+,Bitmap类,转换为JPG超级简单,至于路径的问题,可能是你的快捷方式没有指定起始位置到C:\WINDOWS\Downloaded Program Files目录下。或者使用绝对路径,可以保证dll加载成功。
      

  16.   

    用法:http://www.vckbase.com/document/viewdoc/?id=613