火狐NP插件开发 C++

本文详细介绍了如何使用C++开发火狐NP插件,包括所需的头文件、源文件、创建DLL过程、宏定义设置,以及插件特殊设置和测试方法。读者将学习到从创建工程到实现插件功能的完整步骤。
摘要由CSDN通过智能技术生成

 由于接触NP插件的时间还是比较短,下面总结一下自己对NP插件的理解。

  NP插件还是对现有类的重载,然后实现自己想用的方法。在后面会具体的讲怎么用这样的方法。

1、NP插件所要用到的官方的文件:

A、npapi.h

B、npfunctions.h

C、npruntime.h

D、nptypes.h

上面是几个要用到的头文件

A、np_entry.cpp

B、npn_gate.cpp

C、npp_gate.cpp

上面是要用到的源文件

2、下面说一下具体的创建dll的过程

A、开始创建工程


首先创建一个win32动态库的空项目,如上图所示。

B、然后将上面提到的所要用到的头文件和源文件加入到工程中。我的工程的目录如下 所示:


其中上面所提到的头文件在include文件夹中。添加完成之后编译一下代码。这时候会 报找不到上面提到的头文件错误这时候要设置头文件的查找路径,方法如下:


C/C++=〉常规=〉附加包含目录,加入所要引用的头文件的目录。

再次编译上面的代码,你会发现不会报找不到上面提到的几个头文件。但是会包一个找 不到Plugin.h文件。在这里Plugin.h文件并不是官方提供的,而是我们自己要添加的文 件。所以要添加plugin.h文件,方法如下:

一般情况下是添加一个类的形式添加头文件和源文件,因为在Plugin.h文件中必须实现 一个CPlugin的类。

添加这个类之后,还是会报很多的错误,这就是没有添加自己要填写的代码的缘故。

Plugin.h文件中添加下面几个头文件的引用:

#include "npapi.h"

#include "npruntime.h"

#include <windef.h>

再编译程序,你会发现程序的错误明显的减少了,但是还是有错误,错误信息如下:

c:\program files (x86)\windows kits\8.1\include\um\winnt.h(147): fatal error C1189: #error :  "No Target Architecture"

通过查阅资料我发现编译这个工程需要定义许多的宏定义,下面说一下需要添加什么宏 定义。这时我在windows下定义的宏定义:(debug模式下)

_DEBUG

MOZILLA_STRICT_API

XP_WIN

WIN32

_WINDOWS

_X86_

_USRDLL

MYSECONDNP_EXPORTS

在如下图所示的位置添加:


再重新编译代码还是报错,是不是感觉错误太多了啊。我也不想再弄了。太麻烦,但是 要用,不弄还不行。硬着头皮吧。

发现CPlugin类必须有一固定格式的构造函数,如下所示:

CPlugin(NPP pNPInstance);

修改之后编译还是会报错,经过错误信息判断是CPlugin类中有好多的函数没有实现所 导致的。

下面就添加这些函数,你会发现没添加一个函数,错误就会少一个。所以要将所有的函 数都添加进去。

下面展示一下将所有的函数都添加之后的CPlugin类:

class CPlugin

{

public:

CPlugin(NPP pNPInstance);

~CPlugin();

// 关闭

void shut();

// 判断是否进行了初始化

NPBool isInitialized();

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值