【问题标题】:CUDA: error LNK2005: DllMain already defined in MSVCRT.libCUDA:错误 LNK2005:DllMain 已在 MSVCRT.lib 中定义
【发布时间】:2013-12-04 03:48:36
【问题描述】:

当项目中不包含cuda_test.cu文件时,代码运行正常。

当包含这样的文件时,我收到以下错误消息

mfcs100u.lib(dllmodul.obj) : error LNK2005: DllMain already defined in MSVCRT.lib(dllmain.obj)

cuda_test.cu 有以下头文件、一个全局函数和一个包装器。

#include <cuda.h>
#include <cuda_runtime.h>
#include <device_launch_parameters.h>

所以我不确定是什么导致了这个问题。

经过一番研究,这个问题似乎相当普遍,并且 fixes。但这开始给代码的不同部分带来麻烦。 (“StdAfx.h”包含在所有 .cpp 文件中,如果此信息相关)。

这是一个用 C++ 编写的大型项目,我正在尝试并行化其中的某些部分。

我们将不胜感激一些帮助。如果需要,我可以提供更多详细信息。

【问题讨论】:

  • 看看这篇文章:Compiling CUDA mex files with Visual Studio。特别是后文部分。它描述了 error LNK2005: DllMain already defined in MSVCRT.lib 以及解决它的方法。
  • 谢谢。这有帮助。但完全忽略msvcrt.lib 也会出错。起作用的是忽略mfcs100u 和msvcrt 这两个库,并将它们作为附加依赖项再次添加。 (如果我记得,更改顺序会有所帮助)

标签: c++ visual-studio-2010 cuda


【解决方案1】:

您需要确保应用的所有部分都链接到同一个运行时。

在解决方案资源管理器中,右键单击您的 .cu 文件并选择属性。转到CUDA C/C++ &gt; Host 并确保Runtime Library 设置为与您项目的其余部分相同。

【讨论】:

  • CUDA C/C++ &gt; Host 是 &lt;inherit from host&gt;。所以我猜应该没问题
猜你喜欢
  • 2010-09-25
  • 2021-05-28
  • 2013-01-06
  • 2011-02-13
  • 2014-01-22
  • 2012-04-25
  • 1970-01-01
  • 2014-12-21
  • 2015-08-10
相关资源
最近更新 更多