加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

用C#构建NPAPI插件

发布时间:2020-12-15 08:34:34 所属栏目:百科 来源:网络整理
导读:尝试构建一个C#NPAPI插件我发现了一个 tutorial,它描述了你的dll需要实现一些方法,如NP_GetEntryPoints,NP_Initialize和NPP_New以及其他一些方法. 但是我想要理解的是,如果我可以简单地镜像这些方法名称并构建等效的数据结构,如C#中的文章(如_NPPluginFuncs)
尝试构建一个C#NPAPI插件我发现了一个 tutorial,它描述了你的dll需要实现一些方法,如NP_GetEntryPoints,NP_Initialize和NPP_New以及其他一些方法.

但是我想要理解的是,如果我可以简单地镜像这些方法名称并构建等效的数据结构,如C#中的文章(如_NPPluginFuncs)所述,一切都会有效吗?

请有人能够提供一些指导吗?是否可以在C#中构建NPAPI插件,如果是这样,涉及的基本步骤是什么?

解决方法

如文档中所述:

A NPAPI browser plugin is,at it’s core,simply a DLL with a few specific entry points

这意味着您需要从常规dll导出一些函数,这通常在C/C++中完成.不幸的是,不可能从普通的C#dll,but look at this answer中公开任何入口点,只需付出一些努力就可以通过某种后期构建工具欺骗某些导出.

无论如何不要期望从插件接口传递太多复杂的数据结构,这将是一件痛苦的事.如果你有兴趣做更多的研究,那么使用的关键工作是“反向P /调用”,类似于从托管世界调用常规dll的直接P / Invoke.

C#dll无法直接暴露“入口点”的原因是入口点实际上只是dll中的一些地址,这些地址可以立即执行某些汇编代码. C#dll是不同类型的野兽:它们只是包含IL的文件,编译为“Just In Time”,实际上这样的编译是强制AFAIK with some OS tricks.这就是反向P / Invoke根本不是明星前进的原因.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读