近日因要使用第三方Activex插件,但是火狐浏览器不支持,故用到了NPAPI封装插件。在此记录一笔,以便日后查阅。
准备工作
- 安装好VS2010;
- 下载依赖库 plugin sdk;http://pan.baidu.com/s/1qY76lvm
动手吧
1、创建项目
项目名取名“npplay”,项目名最好以“np”开头。创建新的解决方案,默认方案名与项目名一致。也可以选择已有的解决方案。点击“确认”,进入下一步。
点击“下一步”
选择dll应用程序,点击完成。
2、配置项目属性
1)选中项目右击选择“属性”,进入属性界面。
进入 配置属性->C/C++->常规->附加包含目录;
选择编辑添加 plugin解压后的目录 ~\plugin\base\public
(我本地解压到E:\vs_workspace\);
2)进入 配置属性->C/C++->预处理器->预处理器定义;
选择编辑,换行添加 _X86_
3)进入 配置属性->常规->字符集;
修改为 “使用多字节字符集”,不是必须的。
-
3、添加现有项 项目需要依赖Plugin基础文件,进行二次开发。所以从plugin文件中复制以下文件到工程目录中。
- npplat.h
- pluginbase.h
- np_entry.cpp
- npn_gate.cpp
- npp_gate.cpp
把文件添加到系统中。
注意:cpp文件中需要添加 #include "stdafx.h"
,不然会报错。
4、添加def文件
编辑def文件如下
LIBRARY "npplay"
EXPORTS
NP_GetEntryPoints @1
NP_Initialize @2
NP_Shutdown @3
EXPORTS 内容是默认写法 LIBRARY 后面内容自定义。
5、添加rc文件
编写rc文件,选中右击选择“查看代码”。
添加如下version描述。
注意:BLOCK与Translation 是对应的,表示可以在火狐中使用插件。
源码如下:
VS_VERSION_INFO VERSIONINFO
FILEVERSION 1,0,0,1
PRODUCTVERSION 1,0,0,1
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x1L
#else
FILEFLAGS 0x0L
#endif
FILEOS 0x40004L
FILETYPE 0x1L
FILESUBTYPE 0x0L
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "040904e4"
BEGIN
VALUE "CompanyName", "xxx"
VALUE "FileDescription", "npplay"
VALUE "FileVersion", "1.0.0.1"
VALUE "InternalName", "npplay.dll"
VALUE "LegalCopyright", "Copyright (C) 2017"
VALUE "OriginalFilename", "npplay.dll"
VALUE "ProductName"<