gpt4 book ai didi

.net - 在 64 位环境中使用 32 位程序集

转载 作者:行者123 更新时间:2023-12-01 13:00:09 25 4
gpt4 key购买 nike

我正在尝试将 DevIL.NET 集成到 3ds Max 中以自动将我的图像转换为单一格式。为此,我在 C# 中创建了一个类库,它接受一个字符串并返回新的文件路径

public static class FileConverter
{
public static string ConvertFile(string _sOriginal)
{
// Load the file, save the file, return the new filepath
}
}

该项目引用了 DevIL.NET,它是一个 32 位版本。我的应用程序是 64 位版本,并给出了 BadImageFormatException .说“它”不是有效的 Win32 应用程序。

我已经尝试通过在 .csproj 中添加额外的行来使我的应用程序成为 32 位的。文件: <PlatformTarget>x86</PlatformTarget> .这样,我的测试项目确实有效,但我的类库无效,因为 3ds Max 是 64 位应用程序。

如何将这些 32-64 个问题排列起来,以便我的插件可以工作?鉴于 3ds Max 将是 64 位,而 DevIL.NET 将是 32 位。我似乎无法从 VC++ Express 2008 的源代码中自己构建 64 位的 DevIL.NET。

最佳答案

您不能将一个“位”的 DLL 加载到作为另一个“位”运行的进程中。解决这个问题所能做的就是调整平台或在它自己的进程中运行其他“位”DLL。

对于接受插件的 64 位应用程序,我不得不这样做一次。我创建了一个 64 位 shim DLL,它进入应用程序并通过 IPC 与 32 位进程对话。由于第三方 DLL 也是 32 位,因此需要此 32 位进程。

这是背面的适当痛苦,但不幸的是,这是必需的痛苦,因为当时其他供应商没有 64 位支持。

您可以使用 Process 从 64 位垫片控制其他 32 位进程。 .NET 中的相关类 - 这实际上是我最终要做的。

关于.net - 在 64 位环境中使用 32 位程序集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6744284/

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