制作供js调用的dll并调用

来源:互联网 发布:厦门科华 知乎 编辑:程序博客网 时间:2024/06/05 08:47

本文通过vs2010制作可以供javascript调用的dll

 

本文旨在完成一个c/c++编写的dll,里面有个方法,输入参数为long num返回参数为long* sum=num*10,然后通过js调用这个方法。

一    创建ATL项目

本机环境为64位win7操作系统,使用工具为vs2010

 文件--新建--项目,找到ATL项目,输入项目名称,点击确定。(这里我们使用Test作为项目名称)

2  进入下个页面直接点击下一步

3 进入下个页面直接点完成

4 可以看到以下界面

5 右键点击 项目名称Test, 添加--类

6 在新弹出窗口中选中 ATL简单对象,点击添加

7 在新界面中填入类名,我们用Test,另外在ProgID里面填上TTT(这个我们js中要用到)

8 点击完成,至此ATL项目创建成功

遇到这两个地方都点是

二 添加方法

1  视图--类视图,打开Test,找到ITest

2 右键点击ITest,添加--方法

3 进入添加方法界面,填写方法名字test,选择传入参数和传出参数。

添加入参

添加返回参数

参数添加完毕

点击完成

4 下面编辑方法。打开 视图--解决方案资源管理器,找到Test.cpp并打开

在方法test里面我们添加以下代码

*sum=num*10;

保存。

5 调整项目模式为release

项目生成

生成成功

在 文件--打开--文件 中找到Test根目录,在release文件夹下, 找到生成的dll文件Test.dll

 

 至此,dll制作成功。

四 注册dll

1 将Test.dll方到C:\Windows\System32下面(如果是64为系统机子,需要放到C:\Windows\SysWoW64下面)

2 用管理员身份打开命令行界面,将目录切换到放置Test.dll的目录(我的机子是C:\\Windows\SysWoW64) 运行 regsvr32 Test.dll

dll注册成功

 

五 用javascript调用dll

html页面代码如下

<html>
 <head>
  <title>Document</title>
  <script>
  var mydll=new ActiveXObject("TTT");
  var result=mydll.test(5);

  alert(result);
  </script>

 </head>
 <body>
 </body>
</html>

用ie浏览器打开以后,出现以下界面

点击允许和是以后,弹出结果50,说明js调用成功。
 后话:
一  可以通过将控件注册为安全控件避免以下窗口

 

标记控件为安全的   是实现IObjectSafety  

  具体做法   :atl   com   app   wizard   工程增标记安全控件  
   
1. 在你dll控件的接口实现类的 .h 中继承类列表的末尾添加下面一句话,并在上一行中添加一个逗号;
  public   IObjectSafetyImpl<"类名",   INTERFACESAFE_FOR_UNTRUSTED_CALLER>  
2. 将下行添加到   .h   中的   COM   映射:    
  COM_INTERFACE_ENTRY(IObjectSafety)   即可  
3.  如果IObjectSafetyImpl   未定义   , 则包含Atlctl.h

 

二 该例子是简单类型作为参数,(long)如果想用字符串或者数组作为参数,请参考下一篇博文---js调用c/c++dll,用字符串/数组作为参数

 

0 0
原创粉丝点击