【发布时间】:2011-03-17 05:49:50
【问题描述】:
因此,我们最近升级了我们的项目以使用 Microsoft Visual Studio 2010,但我们的 CUDA 项目遇到了一些问题。
我确实安装了 2008,并且我正在使用 vc90 工具包,并且文件似乎正在编译(创建了它们的关联 .obj 文件)。这是在创建 .lib 作为其输出的项目中。然后将 .lib 链接到另一个项目中,这会产生链接器错误,因为库中的一个文件 (Matrix.obj) 找不到应该在 CUDAMatrix.obj 中的符号之一。
我在 CUDAMatrix.obj 上运行了 dumpbin /SYMBOLS,符号在那里,不是 UNDEF,而是外部的。我在我们的 .lib 上运行了 dumpbin,但符号似乎不在其中。我发现了构建库的详细程度和之后的 .obj 文件列表:
c:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin\Lib.exe
似乎不包含 CUDAMatrix.obj。
总而言之,Visual Studio 项目如何知道将哪些 .obj 文件粘贴到正在制作的 .lib 中?我在任何地方都找不到实际的列表,而且图书管理员子菜单似乎也没有帮助。
或者最不方便的是,是否有一个外部工具(类似于 linux 上的“ar”)可以用来将它生成的 .obj 与库合并?我想也许 lib.exe 上的 /MERGE 开关可以做到这一点,但是当我尝试从命令行运行它时,我不断收到 .dll not found 错误。
附:垃圾箱还确认 .lib 和 .objs 都是 x86 目标。
附言在图书管理员中将它们添加为“附加依赖项”似乎可行,但没有任何好的方法可以自动实现这一点吗?毕竟,它们是项目的一部分。
【问题讨论】:
标签: visual-studio-2010 linker cuda .obj .lib