我正在尝试使用链接到CUDA项目的Visual Studio C ++实现Windows窗体应用程序。
我创建了WFA。
然后,我尝试通过浏览Project Properties的Add Reference部分中的.dll来动态链接应用程序到CUDA项目。但它说“无法添加......它不是.NET程序集或注册的ActiveX控件”。
因此,我将CUDA项目的.obj添加到Linker-> Input-> Additional Dependencies部分,其中包含在WFA项目中运行CUDA所需的.lib文件。然后我得到“致命错误LNK1313:检测到纯模块;无法与ijw / native modules链接”错误。
我将公共语言运行时支持从“纯MSIL公共语言...”更改为“公共语言...”,但后来msvcrtd.lib和libcmt.lib发生冲突。从“附加依赖项”中删除CUDA项目的.obj文件时,此错误消失。
由于CUDA项目的运行时为MT且WFA项目为MT dll,因此会发生此错误。我将WFA的运行时间更改为MT,但随后出现“错误D8016:'/ MTd'和'/ clr'命令行选项不兼容”错误。
由于识别“System ::”需要/ clr,我无法摆脱/ clr选项。
您是否有任何建议使用Windows c ++以最简单的方式链接到cuda项目来创建Windows窗体应用程序?或者,如果有更简单的方法,我会很高兴听到他们。
答案 0 :(得分:1)
我认为您的WFA应用程序是使用CLR的托管C ++ .NET应用程序。您正在尝试包含非托管CUDA DLL,就像它是CLR程序集或COM对象一样。因此VS说/ MT(使用非托管多线程C运行时)和/ CLR不兼容。
因此,您需要将CUDA DLL包装在CLR对象中,或者在项目中使用.NET Binding for CUDA。尝试下载CUDA.NET并将其作为参考合并到您的项目中。