xumenger
xumenger
采纳率72.2%
2015-08-18 05:35

Delphi中,怎么获取DLL中定义的变量

已采纳

可以使用动态加载或静态加载的方式使用DLL中的方法,但是怎么能够获取DLL中定义的变量来使用它呢?

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

5条回答

  • lyhoo163 lyhoo163 6年前

    要明确2个概念:
    1、Dll是EXE的一个变种形态。它是可执行的。
    2、Dll虽然由EXE调用,但执行读入内存后,Dll与EXE分别是独立的内存区域,相互不联系的。二者的数据(变量等)不能传递的。

    为了能让Dll是EXE通联,往往可以通过以下几种方式建立联系。
    1、发消息,它是单相思,消息发出后,对方知道否,接受了吗,不得而知。
    2、通过磁盘文件传递,数据分别写入一个磁盘文件中,数据结构自己可以定。但它有局限性,不能及时获取。
    3、共用内存,即在将EXE文件的变量,在内存中的地址,传递给Dll,实现共享此内存地址(变量),这是最好的方式,如同全局变量使用。 

    点赞 2 评论 复制链接分享
  • lyhoo163 lyhoo163 6年前

    建议通过共享内存的方式,可以直接向共享变量读写数据。

    点赞 3 评论 复制链接分享
  • suiyunonghen 不得闲 6年前

    按照常规方法走吧,将变量作为一个函数返回,然后导出吧

    点赞 评论 复制链接分享
  • caozhy 从今以后生命中的每一秒都属于我爱的人 6年前

    如果你知道变量的确切地址,也可以用ReadProcessMemory函数直接抓内存读取。

    点赞 评论 复制链接分享
  • caozhy 从今以后生命中的每一秒都属于我爱的人 6年前

    定义的什么变量?
    你需要通过dll的导出函数返回这个变量才能获取到。
    变量没办法直接获取。

    点赞 评论 复制链接分享

相关推荐