用C#构建NPAPI插件

前端之家收集整理的这篇文章主要介绍了用C#构建NPAPI插件前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
尝试构建一个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根本不是明星前进的原因.

猜你在找的C#相关文章