gpt4 book ai didi

.net - 使用 SetDefaultDllDirectories 中断字体处理

转载 作者:行者123 更新时间:2023-12-05 07:57:59 30 4
gpt4 key购买 nike

我最近在一个曾经运行良好的程序中遇到了问题。我追踪到以下代码:

using System.Drawing;
using System.Runtime.InteropServices;

namespace Foo
{
static class CProgram
{
[DllImport("kernel32.dll", CallingConvention = CallingConvention.StdCall)]
[return: MarshalAs(UnmanagedType.Bool)]
public static extern bool SetDefaultDllDirectories(int directoryFlags);

public const int LOAD_LIBRARY_SEARCH_DEFAULT_DIRS = 0x000001000;

private static void Main()
{
SetDefaultDllDirectories(LOAD_LIBRARY_SEARCH_DEFAULT_DIRS);
Font font = SystemFonts.DefaultFont;
}
}
}

一旦我使用 SetDefaultDllDirectories 并将除零以外的任何参数作为参数,程序就会崩溃。我将其追溯到 SafeNativeMethods.Gdip.GdipGetGenericFontFamilySansSerif(out fontfamily);它只是调用“GdipGetGenericFontFamilySansSerif”。但是此调用因 FontFamilyNotFound 错误而失败。

它在没有 SetDefaultDllDirectories 的情况下工作。如果我在那个调用之前和之后放置字体分配,它甚至可以工作。

我的系统上是否有任何东西导致了这个错误,或者是来自 MS 的更新导致了这个错误?

系统:Win7 x64,完全更新,AMD Radeon HD,使用最新的 beta 驱动程序

背景:我需要该函数来使用 AddDllDirectory 添加我的可执行文件路径的子目录(类似于 C:/MyProgram/myLibrariesX)

最佳答案

我无法在 Windows 8.1 x64 中使用 Visual Studio 2013 重现该问题,但我可以在 Windows 7 上重现该问题。所以它现在似乎已修复。

关于.net - 使用 SetDefaultDllDirectories 中断字体处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25818073/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com