Mar*_*nix 4 .net 3dsmax 32bit-64bit devil
我正在尝试将 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
}
}
Run Code Online (Sandbox Code Playgroud)
该项目引用了 DevIL.NET,它是 32 位版本。我的应用程序是 64 位版本,并提供BadImageFormatException
. 说“它”不是有效的 Win32 应用程序。
我已经尝试通过在文件中添加额外的行来使我的应用程序成为 32 位.csproj
:<PlatformTarget>x86</PlatformTarget>
。这样,我的测试项目确实可以工作,但我的类库却不能,因为 3ds Max 是一个 64 位应用程序。
如何将这 32-64 个问题排列起来,以便我的插件能够工作?假设 3ds Max 将是 64 位,而 DevIL.NET 将是 32 位。我似乎无法自己从 VC++ Express 2008 中的源代码构建 64 位 DevIL.NET。
您无法将一种“位”的 DLL 加载到作为另一种“位”运行的进程中。为了解决这个问题,你所能做的就是调整平台或者在它自己的进程中运行其他“bitness”DLL。
对于接受插件的 64 位应用程序,我必须执行一次此操作。我创建了一个 64 位 shim DLL,它进入应用程序并通过 IPC 与 32 位进程通信。由于第三方 DLL 也是 32 位,因此需要此 32 位进程。
这是一个真正的痛苦,但不幸的是,由于其他供应商当时没有 64 位支持,因此这是必需的痛苦。
您可以使用 .NET 中的相关类从 64 位填充程序控制另一个 32 位进程Process
- 这实际上就是我最终所做的。
归档时间: |
|
查看次数: |
4351 次 |
最近记录: |