我在帮人做个图像压缩软件的可视化界面
可是他的图像压缩程序是用C写的
我不知道怎么把代码移植过来
谁能帮帮我呀
很急!!!!
解决就结帐!!!!

解决方案 »

  1.   

    把他的代码封装成dll,供vb调用
      

  2.   

    那么VB如何调用这个DLL呢?
    可不可以把C源程序生成.EXE文件,嵌入VB中呢?
      

  3.   

    把C生成DLL调用,办法是
     ActiveX  DLL:  
             regsvr32  cfile.dll  
             在VB中project->reference  
             然后创建对象,并调用其方法  
     
    2.  普通动态连接库  
             这就需要申明函数了,可以参考其它API申明的方式来做。  
             private  declare  function  add  lib  "cfile"  alias  "add"  (byval  a  as  integer,byval  b  as  integer)  as  integer  
     
     
    ---------------------------------------------------------------  
     
    在VC里,函数名登记到.def文件里了没有?注意不是__declspec(dllexport)这个。  
     
    .def文件里一定要有:  
     
    EXPORTS  
     
           add      @1  
    ---------------------------------------------------------------  
     
    自己定义也可以。  
     
    或者你用VC工程向导的“MFC  AppWizard(dll)”->“Regular  Dll  with  shared  MFC”也就是第二项,这个就为你生成了.def。  
     
    用MFC的DLL要有MFC支持哦~设计接口参数时,可  别  来个“...  Func(CWordArray  &a)”这样的东东……  
    ---------------------------------------------------------------  
     
    主要是接口问题,我举个最简单的倒子给你:  
    一、在VC中建一个动态连接库工程取名XX,不要MFC支持  
    二、建一个C/C++文件,如XX.C,内容如下:  
    SHORT  SumTwo(SHORT  a,SHORT  b)  
    {  
         return  a+b;  
    }  
    三、建一个DEF文件,如XX.DEF,内容如下:  
    EXPORTS  
         SumTwo  
    四、将这两个文件都加入当前工程XX  
    五、将当前工程编译成XX.DLL  
    六、用VB来调用SumTwo这个函数,建新VB工程  
    七、在默认的FORM上加上一个按钮Command1  
    八、在Command1的OnClick中加入  
           MsgBox  SumTwo(3,4)                '显示3+4的值  
    九、将前面生成的XX.DLL复制到VB工程所在目录  
    十、在这个文件的最前面声明SumTwo这个函数  
           Private  Function  SumTwo  Lib  "XX.DLL"  alias  "SumTwo"  (a  As  Integer,b  As  Integer)  As  Integer  
    十一、运行这个VB程,点击Command1按钮,你将得到3+4的和7  
    十二、关于第(十)步函数的声明请参看MSDN中的相关资料,  
               主要是参数和返回值的数据类型不能弄错。  
     
    ---------------------------------------------------------------  
     
    在VC中生成的DLL只有是扩展的DLL才能被其它语言调用,所以你在VC中生成的DLL可能不是扩展的,因此约定出错的,你把你VC的DLL改成扩展的就可以了。
     
      

  4.   

    那么VB如何调用这个DLL呢?
    可不可以把C源程序生成.EXE文件,嵌入VB中呢?不可以.!
      

  5.   

    //可不可以把C源程序生成.EXE文件,嵌入VB中呢?也不是不可以,不过这样一来,你的工作量就要大上很多了
      

  6.   

    //可不可以把C源程序生成.EXE文件,嵌入VB中呢?方法1:可以先把EXE反汇编,再用CallWindowProc方法2:放在资源文件里,要用的时候再释放