无法在DLL'Magick.NET-Q8-x64.Native.dll'中找到名为'Environment_SetEnv'的入口点

Chr*_*ini 5 imagemagick.net magick.net

升级到最新的ImageMagick/Magick.NET(7.0.2.901),它在本地构建并运行良好,但在服务器上出现此错误.

无法在DLL'Magick.NET-Q8-x64.Native.dll'中找到名为"Environment_SetEnv"的入口点.

似乎是一个新问题.从这里的变化来看:

https://magick.codeplex.com/discussions/650746

不再需要VC运行时,因此安装它们不会成为问题 - 而且,我已经为库的先前版本安装了2008年,2012年和2015年的VC运行时,这些工作正常.

IIS中的Windows Server 2008 64位,64位.Net 4.

当前的解决方法是回滚到7.0.0.22,它运行没有错误.

Install-Package Magick.NET-Q8-AnyCPU -Version 7.0.0.22
Run Code Online (Sandbox Code Playgroud)

ImageMagick.X64.Environment_SetEnv(IntPtr name,IntPtr value)

Tri*_*chl 5

几个月前我遇到了这个问题,最终发现了两个不同的原因:

  1. AnyCPU与先前版本冲突

    问题:Magick.NET将本机库缓存在临时目录中,除非它已经存在(相关源代码).由于我之前已经使用Q8-x64版本(不测试CPU架构)进行了测试,因此Magick.NET-Q8-x64.Native.dll已经存在并且未被覆盖.

    解决方案:删除本机库的临时目录.在我的Windows版本上,它位于%TEMP%\Magick.NET.{TargetFramework}.{MagickNETVersion}.然后,Q8-AnyCPU版本使用Environment_SetEnv方法提取了一个新的本机库.

  2. 缓存目录中缺少权限

    问题:本机库缓存在具有执行代码的受限权限的目录中.

    解决方案:更改缓存目录的位置.我的解决方案是以下代码.

    #if DEBUG
    private static bool MagickCacheDirectoryIsSet = false;
    
    public DefaultConstructor()
    {
        if (!MagickCacheDirectoryIsSet)
        {
            ImageMagick.MagickAnyCPU.CacheDirectory = @"path\to\more\permissive\directory";
            MagickCacheDirectoryIsSet = true;
        }
    }
    #endif
    
    Run Code Online (Sandbox Code Playgroud)


小智 0

遇到同样的问题,从 bin 文件夹中删除所有 magick dll 并重新安装解决了它。