When linking my C++ project, which contains a single CUDA .cu file, I am getting linker errors due to multiply-defined symbols. The identical project, built without the .cu file, gets no linker errors.
Here is the part of the linker output (/VERBOSE:LIB) showing the errors:
1>Searching libraries
...
1> Searching C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\lib\x64\cudart.lib:
1> Searching C:\Program Files (x86)\Microsoft Visual Studio017\Community\VC\Tools\MSVC4.11.25503\lib\x64\libcpmtd.lib:
1> Searching C:\Program Files (x86)\Microsoft Visual Studio017\Community\VC\Tools\MSVC4.11.25503\lib\x64\LIBCMTD.lib:
1> Searching C:\Program Files (x86)\Microsoft Visual Studio017\Community\VC\Tools\MSVC4.11.25503\lib\x64\OLDNAMES.lib:
1> Searching C:\Program Files (x86)\Microsoft Visual Studio017\Community\VC\Tools\MSVC4.11.25503\atlmfc\lib\x64\nafxcwd.lib:
1>nafxcwd.lib(afxmem.obj) : error LNK2005: "void * __cdecl operator new(unsigned __int64)" (??2@YAPEAX_K@Z) already defined in LIBCMTD.lib(new_scalar.obj)
1>nafxcwd.lib(afxmem.obj) : error LNK2005: "void __cdecl operator delete(void *)" (??3@YAXPEAX@Z) already defined in LIBCMTD.lib(delete_scalar.obj)
1>nafxcwd.lib(afxmem.obj) : error LNK2005: "void * __cdecl operator new[](unsigned __int64)" (??_U@YAPEAX_K@Z) already defined in LIBCMTD.lib(new_array.obj)
1>nafxcwd.lib(afxmem.obj) : error LNK2005: "void __cdecl operator delete[](void *)" (??_V@YAXPEAX@Z) already defined in LIBCMTD.lib(delete_array.obj)
This is a 64-bit debug build, using VS2017 15.3.1 and CUDA v9.0 RC, built on 64-bit Windows 7 Pro.
How can I resolve this apparent library conflict?