• 三星Gear S4智能手表曝料:支持LTE 金色配色三星GearS4智能手表曝料-手机行情 2019-04-14
  • 甘坐冷板凳 勇做栽树人(科技创新系列谈②) 2019-04-14
  • 人民网评:生态兴则文明兴 2019-04-09
  • 我省进入毒蘑菇中毒高发季 省疾控中心发布安全警示 2019-04-09
  • 青海河南:脱贫牧民的新生活 2019-04-08
  • 回复@寻找失落的真理:跟你的铁环玩去!咱真的没兴趣碾压你也。 2019-04-08
  • 【理上网来喜迎十九大】习近平指引中国特色大国外交 2019-04-07
  • 西藏实施首个高海拔生态搬迁项目 2019-04-07
  • JBL FLIP4音乐万花筒4代焕新上市 时尚小巧带来澎湃体验 2019-03-29
  • 为什么说一直辛苦劳作的农民没有富起来?而不说一直勤劳的农民没有富起来? 2019-03-21
  • 云冈石窟掌门人张焯入围“绿色中国年度人物”复评 2019-03-20
  • 第530期:为何吃新鲜蔬果能抗肿瘤、强免疫……?因为有“它”! 2019-03-09
  • 中船重工总经理孙波涉嫌严重违纪违法被查 2019-03-09
  • 林肯中心室内乐协会再掀浪潮 完整录音入驻中国 亚洲巡演整装待发 室内乐 厂牌 2019-03-08
  • 【组图】第32届香港国际旅游展开幕 2019-03-05
  • DLL(VFB教程2-8)

      勇芳 2018-2-16 2294

    此处为VisualFreeBasic编程教程(从零开始学或VB进阶)的子章节部分,全部目录点链接。

    写DLL

    QQ截图20180216185655.jpg

    点编译DLL,就可以,产生出了DLL,DLL是写好的??楦鸬娜砑饔媚鉊LL里的函数。

    被EXE加载与卸载

    Function FF_WINMAIN( ByVal hInstance     As HINSTANCE, _
                         ByVal hPrevInstance As HINSTANCE, _
                         ByRef lpCmdLine     As String, _  
                         ByVal iCmdShow      As Long ) As Long
       'hInstance 当前DLL??榫浔?nbsp; iCmdShow DLL状态通知,就2个  其它参数为空。
      Select Case iCmdShow 'fdwReason
        Case DLL_PROCESS_ATTACH '加载DLL,DLL被加载到内存时,可以做任意事,包括耗时间等
            AfxMsg "DLL被加载到内存时"
        Case DLL_PROCESS_DETACH '卸载DLL,DLL被卸载或软件退出时,需要快速完成,不能用进程锁。
             AfxMsg "DLL被卸载时"
      End Select
    
    End Function

    此函数,在VFB工程【资源】里的【特殊函数】里,并不是你自己写的函数。

    这是DLL起始函数。

    '函数后面加 Export 就表示导出此函数,其它软件才可以调用

    '--------------------------------------------------------------------------
    Public Function Add2( ByVal x As Integer, ByVal y As Integer ) As Integer Export
    '函数后面加 Export 就表示导出此函数,其它软件才可以调用
    '然后 编译为DLL
    
      Return( x + y )
    End Function
      '--------------------------------------------------------------------------
    Public Function ok( aa As String  ) As  String Export
    '函数后面加 Export 就表示导出此函数,其它软件才可以调用
    '然后 编译为DLL
    
      Function=aa
    End Function

    FB 生成的DLL,函数名后面带符号,其它语言调用,需要用 DLL查看器看函数输出名,

    要是给 FB调用,同时吧  【???.dll.a】文件复制过去,就不管符号了。生成的EXE后,就不需要带【???.dll.a】 文件

    DLL 里函数名称,全部变成大写,且带符号,如: [email protected]


    静态调用DLL

    先声明DLL,需要在 【资源】里的【特殊函数】 FF_AppStart ??槔?br />

    Declare Function Add2 Lib "开发DLL例题" ( ByVal x As Integer, ByVal y As Integer ) As  Integer
    Declare Function ok Lib "开发DLL例题" ( aa As String  ) As  String

    是FB编译的DLL,必须把【 lib开发DLL例题.dll.a 】文件一起和 DLL 文件 复制来用,不然不可以编译

    生成EXE后,此文件不需要带。

    其它软件,比如 C 生成的DLL,必须先把DLL复制到软件输出文件夹中,才可以

    Declare Function 函数名 Lib "dll文件" Alias "DLL中的函数名"(ByVal eID As Integer  ) As  Integer

    声明后,就像是自己的函数使用DLL里的函数了

    注意:DLL文件,只能写文件名,不可以带 扩展名,.DLL 不能打上去。

    FF_Control_SetText  HWND_FORM1_TEXT1 ,Str(  Add2 (100,Rnd*100))
    AfxMsg ok("ddddd")

    动态调用DLL

      Dim As Any Ptr library = DyLibLoad( "开发DLL例题" ) '就文件名,不能带 .DLL 
      If ( library = 0 ) Then
          AfxMsg "加载DLL失败"
          Return 1
      End If
      Dim AddNumbers As Function( ByVal As Integer, ByVal As Integer ) As Integer
      AddNumbers = DyLibSymbol( library, "ADD2" )  ' 特别提醒,必须全部大写
      '从DLL查看器里可以看到全称是 [email protected] ,而FB用FB的DLL可以省略  @8 的符号 
      
      If ( AddNumbers = 0 ) Then
          AfxMsg "无法从开发DLL例题库中检索Add2()函数的地址"
          Return 1
      End If
    
      FF_Control_SetText  HWND_FORM1_TEXT2 ,Str(  AddNumbers (100,Rnd*100))
      
      AfxMsg "使用完成"
      DyLibFree( library )  '卸载DLL ,特别注意,假如DLL还在工作,卸载会让软件崩溃
      '本例题里,加载会弹窗提示,就是在工作,必须先关弹窗在卸载



    最新回复 (3)
      您需要登录后才可以回帖 登录 | 注册
    •   勇芳 28天前
      0 引用 4
      vhvihs0668 大BUG,根本无法调用dll,无论相对路径还是绝对路径,总是找不到dll,哪怕例题都无法通过。
      不是BUG,是因为你写错了,不可以带扩展名,必须在声明??槔锷?。
    • vhvihs0668 6月前
      0 引用 3

      有说遇到这个问题吗?

    • vhvihs0668 6月前
      0 引用 2

      大BUG,根本无法调用dll,无论相对路径还是绝对路径,总是找不到dll,哪怕例题都无法通过。

    返回
  • 三星Gear S4智能手表曝料:支持LTE 金色配色三星GearS4智能手表曝料-手机行情 2019-04-14
  • 甘坐冷板凳 勇做栽树人(科技创新系列谈②) 2019-04-14
  • 人民网评:生态兴则文明兴 2019-04-09
  • 我省进入毒蘑菇中毒高发季 省疾控中心发布安全警示 2019-04-09
  • 青海河南:脱贫牧民的新生活 2019-04-08
  • 回复@寻找失落的真理:跟你的铁环玩去!咱真的没兴趣碾压你也。 2019-04-08
  • 【理上网来喜迎十九大】习近平指引中国特色大国外交 2019-04-07
  • 西藏实施首个高海拔生态搬迁项目 2019-04-07
  • JBL FLIP4音乐万花筒4代焕新上市 时尚小巧带来澎湃体验 2019-03-29
  • 为什么说一直辛苦劳作的农民没有富起来?而不说一直勤劳的农民没有富起来? 2019-03-21
  • 云冈石窟掌门人张焯入围“绿色中国年度人物”复评 2019-03-20
  • 第530期:为何吃新鲜蔬果能抗肿瘤、强免疫……?因为有“它”! 2019-03-09
  • 中船重工总经理孙波涉嫌严重违纪违法被查 2019-03-09
  • 林肯中心室内乐协会再掀浪潮 完整录音入驻中国 亚洲巡演整装待发 室内乐 厂牌 2019-03-08
  • 【组图】第32届香港国际旅游展开幕 2019-03-05