用C#构建NPAPI插件

Max*_*ich 6 .net c# interop npapi

试图建立一个C#NPAPI插件,我发现了一个教程,它描述的是你的DLL需要实现一些方法,如NP_GetEntryPoints,NP_InitializeNPP_New与许多其他的一起.

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

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

Fel*_*ano 4

如文档中所述:

\n\n
\n

NPAPI 浏览器插件在其\xe2\x80\x99s 核心只是一个具有一些特定入口点的 DLL

\n
\n\n

这意味着您需要从常规 dll 中导出一些函数,这通常是在 C/C++ 中完成的。不幸的是,不可能从普通的 C# dll 公开任何入口点,但看看这个答案,通过一些努力,似乎可以通过某种后期构建工具来欺骗某些导出。

\n\n

无论如何,不​​要期望从插件接口传递太多复杂的数据结构,这会很痛苦。如果您有兴趣进行更多研究,则可以使用“反向 P/Invoke”,类似于从托管世界调用常规 dll 的直接 P/Invoke。

\n\n

C# dll 无法直接公开“入口点”的原因是, 入口点实际上只是 dll 内的某个地址,指向一些可立即执行的汇编代码。C# dll 是不同类型的野兽:它们只是包含“即时”编译的 IL 文件,实际上,这种编译是通过一些操作系统技巧强制进行的。这就是反向 P/Invoke 根本不简单的原因。

\n