设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
Project1 查看内容

利用DLL完成RM不可能任务!(3)用VC制作自己的DLL

2007-4-30 00:00| 发布者: 叶舞枫| 查看: 4287| 评论: 0|原作者: 技术区版主·gpra8764

摘要:     作者 gpra8764 版本 没有 相关网址 点此进入讨论贴 范例工程 没有范例   教程内容 再次复活的教程,继续我们的旅程,利用DLL完成RM无法单独完成的任务!教程第
 
 

作者

gpra8764

版本

没有

相关网址

点此进入讨论贴

范例工程

没有范例


 

教程内容


再次复活的教程,继续我们的旅程,利用DLL完成RM无法单独完成的任务!

教程第三弹:Microsoft Visual C++ 6.0 制作 DLL ~

以前我们总是利用系统自带的WIN32.API.DLL来完成各种功能,可以毕竟是系统里有的东西,如果系统没有提供的功能,我们不是就束手无策了?

所以,今天我们就要学习怎样用VC++6.0来制作自己的DLL!

当然,这是针对拥有VC++使用基础的人来写的教程,具体不会C++的只有自己学习先了~
…………

首先我们要了解VC++6.0(后面就简称VC了)如何建立DLL工程。

点击文件->新建(Ctrl+N),打开新建窗口,选择如下选项,并且填入必要的内容,发张图片:


选择A simple DLL project(简单的DLL框架),然后点击Finish(完成)。
(注:如果有兴趣的话,您可以选择A DLL that exports some symbols,就是一个输出几个函数的DLL,里面输出了简单的函数,可以参考看看)

最后确定之后我们就建立了一个简单的DLL工程了,在这里写的程序和平时使用VC写程序是差不多的。

这个工程里有几个文件:stdafx.h、stdafx.cpp,这是预编译头文件,不用去理会它。还有一个cpp文件,名字和工程名应该是相同的,我们写的程序大都写在这里,最后导出的函数都是要在这里写的。

写两个示例的函数:

// 不能导出的函数
int FunNoExt()
{

}

// 可以导出的函数
extern int __stdcall FunExt()
{

}

这里的__stdcall好像是表明了函数调用的方式,反正是我们不用去管它的东西……

然后就是函数的导出,我们在这里利用DEF文件来执行这个功能。
在工程中添加一个文本文件,扩展名改为def,然后在这个def文件里写DLL导出函数,格式如下:

LIBRARY 队列        //工程名
DESCRIPTION        //在这里添加说明
EXPORTS        //这里就是写导出函数名字的
FunExt @1        //函数名,@后面的可以不写。

这就是def的格式,LIBRARY后面指定了导出名,可不写,不写的话默认就是文件名,一般这个和文件名就是应该相同。EXPORTS后面的内容指定了要导出的函数,后面的@1表明了导出顺序,这个没什么关系可以随便定义一个数字,也可以不写。

写入了具体的内容就可以编译了,在这里随便写了一个位操作的代码,就拿过来编译成DLL了,具体参考范例工程里的VC工程。

编译的时候注意要在编译选项里设置编译方式为Release方式,不然有的时候其它机器会无法调用,而且效率会降低~

这个DLL具体导出两个函数:
long MoveLeft(long x,int mov) # 二进制数x左移mov位
long MoveRight(long x,int mov) # 右移

使用实例:
首先把编译好的DLL拷贝到RM工程相同路径!
在所有脚本快之前添加以下内容,就会输出“4”,“4”两次返回值~

# 扩展 Integer 类的功能~
class Integer < Numeric
  # 二进制左移
  def move_l(mov)
    dll1 = Win32API.new('Bin', 'MoveLeft', 'li', 'l')
    dll1.call(self,mov)
  end
  # 二进制左移
  def move_r(mov)
    dll2 = Win32API.new('Bin', 'MoveRight', 'li', 'l')
    dll2.call(self,mov)
  end
end

p 16.move_r(2)
p 2.move_l(1)

教程,截图,以及VC工程及DLL下载:
http://bbs.66rpg.com/UP_PIC/200703/RMDLL示例.rar

 
 

教程的通用说明

本站发布的教程,大多经过一些测试,应该都能够实现相应功能。但不保证所有的教程都是最优化的制作方法。

相关问题,点击发布贴进行讨论。谢谢您的鼓励与支持。


鲜花
拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-4-20 14:26

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

返回顶部