微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

用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根本不是明星前进的原因.

原文地址:https://www.jb51.cc/csharp/244075.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐