[CUDA] 有关CUDA的一些配置

 曾经装了winxp64 + nvidia driver19*.* + VS2008(sp1),感觉很卡,所以一直用cuda2.2.

最近装了win7,发现对190以上版本的驱动兼容性很好,就装了cuda2.3,本来想体验一下VS2010 beta2,

但是后来从微软工作人员处得知MSBuild还存在一些bug,无法正常使用cuda,并且暂时不能给我补丁,无奈

之下换回VS2008,不做傻乎乎吃螃蟹的人了。

 

在使用cuda2.3的时候,有时候可能会进行win32和x64的切换,我把几个常见问题罗列如下:

 

1、在VS2008里如何设置文件路径?

     答:Tools》options》Projects and Solutions》VC++ Directories,右侧添加

                                                               win32                                                     x64

           Executable files                       C:/CUDA/bin                                    C:/CUDA/bin64

           Include files                             C:/CUDA/include                              C:/CUDA/include

           Library files                              C:/CUDA/lib                                     C:/CUDA/lib64

 

2、弹出错误fatal error LNK1112: module machine type 'x64' conflicts with target machine type 'X86'

     答:这是由于我使用的是64位toolkit,默认编译成64位的obj文件,所以在win32模式下会弹出此错误。

           打开project的property pages,在CUDA Build Rules v2.3.0(因为已经勾选了cuda.rules)》

           General》Extra Options里面填写--machine 32,意思是生成32位的obj文件。具体参数可参看

           nvcc的说明文档。

 

3、我的win32模式虽然编译通过,但是运行时会出现the application was unable to start correctly(oxc000007b)的错误提示。

     答:不知道路径设置在哪里有错误,原因是启动时找到的cudart.dll版本错误,将C:/CUDA/bin中的

           cudart.dll拷贝到本工程的文件夹,即可正确运行。暂时猜测是运行了系统环境变量里的(待验证)。

 

4、错误或警告defaultlib 'LIBCMT' conflicts with use of other libs; use /NODEFAULTLIB:library

     答:这是由于使用运行库的版本不一致导致的,解决方案也很简单,就是你引用的所有的库都要用同一版本,

           例如/MT, 或/MTd等等。在project的property pages中,C/C++》Code Generation》Runtime

           library 和 CUDA Build Rules v2.3.0》Hybird CUDA/C++》Runtime Library中的设置要一致。

 

 

你可能感兴趣的:(CUDA,application,Build,library,generation)