c# DietPi下的Mono Cudafy运行失败
Posted
技术标签:
【中文标题】c# DietPi下的Mono Cudafy运行失败【英文标题】:c# Mono Cudafy under DietPi failed to run 【发布时间】:2020-01-30 19:50:44 【问题描述】:我在我的 Odroid XU4 上安装了 DietPi,我安装了 mono-runtime。我用c#做了一个简单的程序:
using System;
using Cudafy;
using Cudafy.Host;
using Cudafy.Translator;
namespace cudafy_test
class Program
static void Main(string[] args)
try
CudafyModes.Target = eGPUType.OpenCL;
CudafyTranslator.Language = eLanguage.OpenCL;
CudafyModule km = CudafyTranslator.Cudafy();
string txt;
try
txt = CudafyHost.GetDeviceCount(eGPUType.Cuda).ToString();
catch
txt = "0";
Console.WriteLine("Cuda devices: " + txt);
try
txt = CudafyHost.GetDeviceCount(eGPUType.OpenCL).ToString();
catch
txt = "0";
Console.WriteLine("OpenCl devices: " + txt);
try
txt = CudafyHost.GetDeviceCount(eGPUType.Emulator).ToString();
catch
txt = "0";
Console.WriteLine("Emulations CPU devices: " + txt);
GPGPU gpu = CudafyHost.GetDevice(CudafyModes.Target, CudafyModes.DeviceId);
gpu.LoadModule(km);
gpu.Launch().thekernel();
catch (Exception ex)
Console.WriteLine(ex.Message);
Console.WriteLine("Hello world");
Console.ReadKey();
[Cudafy]
public static void thekernel()
我将它编译为 x86。甚至我通过以下方式检查了 dll 目标:
using System;
using System.Reflection;
using System.IO;
namespace project
class Program
static void Main(string[] args)
DirectoryInfo di = new DirectoryInfo(@"dir");
var files = di.EnumerateFiles("*.dll", SearchOption.TopDirectoryOnly);
foreach (var d in files)
var ass = AssemblyName.GetAssemblyName(d.FullName);
Console.WriteLine(d.Name);
Console.WriteLine(ass.ProcessorArchitecture.ToString());
Console.WriteLine(".................");
Console.WriteLine("Done");
Console.ReadKey();
它产生的结果是所有的 dll。
但是当我在 bash 中运行时:
单声道cudafy_test.exe
它向我报告以下错误:
未处理的异常: System.BadImageFormatException:无法解析字段令牌 0x04000001 文件名:'cudafy_test'
你有足够的经验吗?请给我一条关于如何解决此问题的建议。
【问题讨论】:
【参考方案1】:我不应该是mono-runtime(小型mono安装,但应该是较大的安装mono-devel或mono-complete)。我必须看看它们有何不同。
【讨论】:
以上是关于c# DietPi下的Mono Cudafy运行失败的主要内容,如果未能解决你的问题,请参考以下文章
从 Mono 上运行的 C# 进程运行 C++ 应用程序。运行检测器错误