首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PCRE的AnyCPU .net包装器

PCRE的AnyCPU .net包装器
EN

Stack Overflow用户
提问于 2016-05-11 12:52:41
回答 1查看 390关注 0票数 1

我想要一个用于PCRE的AnyCPU dll用于C#。在当前可用的PCRE.NET中,由于其C++依赖关系,我们可以将其设置为32位或64位。是否有一个实现可以是真正的MSIL,比如使用DllImport和if else来根据应用程序选择正确的源。如果没有,是否有人能指导如何制作。如能提供任何帮助,将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-05-11 14:31:16

免责声明:,我是PCRE.NET的作者。

PCRE.NET是一个AnyCPU程序集,它在其中提供了本机库的x86版本和x64版本。它将在运行时选择正确的。不过,它不会运行,也不会使用ARM或任何其他架构。

如果需要一些详细信息,则主MSIL程序集在其资源中包含两个混合模式程序集。在运行时,它将选择正确的一个,将其解压缩到%TEMP%中,然后加载并使用它。

但是,您需要安装MSVC 2015可再发行包,因为C++/CLI部分取决于它。

要使库与.NET 4兼容,您必须用IList<T>替换IReadOnlyList<T>、用Thread.VolatileWrite替换Volatile.Write等接口。

至于这一行:

代码语言:javascript
复制
System::Threading::Volatile::Write(_calloutInfoByPatternPosition, dict);

您可以将其替换为:

代码语言:javascript
复制
#undef MemoryBarrier
System::Threading::Thread::MemoryBarrier();
_calloutInfoByPatternPosition = dict;

没那么漂亮,但很管用。

最后但并非最不重要的一点是,确保运行build script (build/Build.Bat)来编译库,因为它将执行在PCRE.NET.dll中嵌入混合模式程序集所需的步骤。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37163285

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档