在资源文件中的dll如何调用?
 我把dll做成了资源文件,但不知如何调用资源文件中的dll。
 LoadLibrary()括号内代码该如何写!!!谢谢!!!!

解决方案 »

  1.   

    NewInst := LoadLibraryEx(FileName, 0, LOAD_LIBRARY_AS_DATAFILE);
    ResStream := TResourceStream.Create(NewInst, ResName, RT_RCDATA);
    ...
      

  2.   

    to : tonylk
    能说详细点吗?我是初学者,filename是不是我在rc文件中的第一个参数,resname是第三个参数是吗?后面还需不需loadlibrary(ResStream),望多多指教!!
      

  3.   

    to:tonylk
      程序报:  resouce my.dll not found! 为什么找不到啊!
      

  4.   

    var
    MYhinst:Thandle;
    .....
    MyHinst:=loadlibrary('***.dll');
    注意路径就行了
      

  5.   

    to fj218:
      我的DLL已做为资源文件并编译到了exe中啊,路径该如何写啊!谢谢!!
      

  6.   

    你的DLL路径不对吧,三个办法
    把你的DLL放到EXE所在目录下或者系统目录下
    在DELPHI中设置相应的搜索路径
    LOADLIBRARY时引用DLL的绝对路径
      

  7.   

    可是我的dll已经做为了资源文件,放到了exe中啊,LOADLIBRARY路径当如何写呢?
    望指教!!!!
      

  8.   

    我的dll已经做为了资源文件,放到了exe中啊
    呵呵,那就不要loadlibrary('***.dll')这句了,直接用hinstance(一定用它,delhpi自定义的)进行调用
      

  9.   

    hinstance这句如何用呢?请详细点好吗,解决后马上给分!!!!
      

  10.   

    如要调用EXE中的icon图标procedure TForm1.FormClick(Sender: TObject);
    var
    ico1:ticon;
    begin
    ico1:=ticon.Create;
    ico1.Handle:=LoadIcon(hInstance, 'mainicon');  //mainicon是delphi预定义的程序图标标示符
    form1.Canvas.Draw(10,10,ico1);
    end;
    bmp图像用LoadBitmap(hInstance, '资源标识符'); 语句
    光标用LoadCursor(hInstance,'资源标识符');
    等等你可以查看资源文件有关资料
      

  11.   

    to fj218:
      资源文件的有关资料我已经查了不少,调用icon,bmp,cursor都没有问题,关于资源文件中的dll或exe如何调用,文章里只有释放出来,然后再调用的办法。即然dll已经做为了资源文件,有没有办法不释放文件,而直接调用呢?
      

  12.   

    我明白了,你把Dll、EXE等文件和Bmp、icon文件一样做成一个整体的资源文件,要问如何调用这个dll文件。那我也不知道?不过我不知你这样做有什么必要?难道是为了隐藏这个DLL文件,那还不如把dll中的程序代码直接拷贝到EXE文件中,直接用就行了,何必要转个弯。如果你这个Dll本身是资源文件的话,那就更没必要了。
      

  13.   

    to fj218
      您说的对,我的确是为了隐藏这个dll,dll中的代码我并没有,我也不想让这个dll显示出来,我现在只能把它放到临时目录中进行调用。看来真的没有办法调用资源文件中的dll了。
      顺便在请教一个dll问题,dll有没有像form 的close事件,当应用程序在释放dll时,dll引发什么事件呢?dll能否知道自已被释放了!我希望我的dll在被释放时,做ini的配置。