VS C ++ 2008
我正在处理DirectX教程。
在源代码中有这一行:
#pragma comment (lib, "d3d9.lib")
当我编译所有链接好的时候。
但是,我注释掉了这一行,并尝试在属性下包含标题和库,如下所示:
C/C++ - General
Additional include directories: "C:\Program Files\Microsoft DirectX SDK (August 2009)\Include"
Linker - General
Additional library directories: "C:\Program Files\Microsoft DirectX SDK (August 2009)\Lib\x64"
Linker - Input: d3d9.lib
但是,我收到了这个链接器错误:
1>main.obj : error LNK2019: unresolved external symbol _Direct3DCreate9@4 referenced in function _initD3D
但是,当我只使用pragma时,我没有收到任何链接器错误。只有当我尝试用上面的属性包含它们时才会这样。
使用pragma并使用适当的项目包含标题/库有什么真正的区别?
非常感谢,
答案 0 :(得分:3)
首先,#pragma comment(lib)只是链接器配置
第二,SDK应该在路径中,所以不要设置额外的库目录(你可以用错误的版本覆盖它),只需将d3d9.lib添加到链接器的输入。
答案 1 :(得分:1)
据我所知,没有区别。 pragma lib只是告诉链接器按名称查找特定的库。
此外,由于未在编译指示中指定路径,因此链接器依赖于项目的当前lib路径。尝试不向链接器选项添加任何路径(默认情况下,DX SDK会添加安装到任何visual studio的路径,直接修改全局visual studio路径。请参阅工具/选项/项目和解决方案/ VC ++目录/显示库文件目录)
要检查的一些事项: