【问题标题】:Windows form application using Visual Studio c++, that links to a CUDA project使用 Visual Studio c++ 的 Windows 窗体应用程序,链接到 CUDA 项目
【发布时间】:2012-10-20 05:10:12
【问题描述】:

我正在尝试使用链接到 CUDA 项目的 Visual Studio C++ 来实现 Windows 窗体应用程序。

  1. 我创建了 WFA。

  2. 然后我尝试通过浏览项目属性的添加引用部分中的 .dll 将应用程序动态链接到 CUDA 项目。但它说“无法添加......它不是 .NET 程序集或注册的 ActiveX 控件”。

  3. 因此,我将 CUDA 项目的 .obj 添加到 Linker->Input->Additional Dependencies 部分,其中包含在 WFA 项目中运行 CUDA 所需的 .lib 文件。然后我收到“致命错误 LNK1313:检测到纯模块;无法与 ijw/native 模块链接”错误。

  4. 我将公共语言运行时支持从“纯 MSIL 公共语言...”更改为“公共语言...”,但随后 msvcrtd.lib 和 libcmt.lib 发生冲突。当从“附加依赖项”中删除 CUDA 项目的 .obj 文件时,此错误消失。

由于CUDA项目的runtime是MT,WFA项目是MT dll,所以会出现这个错误。我将 WFA 的运行时更改为 MT,但随后出现“错误 D8016:'/MTd' 和 '/clr' 命令行选项不兼容”错误。

由于识别“System::”需要/clr,因此我无法摆脱/clr 选项。

您对使用 Windows c++ 创建一个以最简单的方式链接到 cuda 项目的 Windows 窗体应用程序有什么建议吗?或者,如果有更简单的方法,我会很高兴听到它们。

【问题讨论】:

  • 您的问题以目前的形式难以阅读。能不能分成几段给大家看?

标签: c++ windows forms cuda


【解决方案1】:

我认为您的 WFA 应用程序是使用 CLR 的托管 C++ .NET 应用程序。您正在尝试包含非托管 CUDA DLL,就好像它是 CLR 程序集或 COM 对象一样。因此 VS 说 /MT(使用非托管多线程 C 运行时)和 /CLR 不兼容。

因此,您需要将 CUDA DLL 包装在 CLR 对象中,或者在项目中为 CUDA 使用 .NET 绑定。尝试下载 CUDA.NET 并将其合并到您的项目中作为参考。

http://www.hoopoe-cloud.com/Solutions/CUDA.NET/

【讨论】:

    猜你喜欢
    • 2023-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-08
    • 2017-10-11
    相关资源
    最近更新 更多