A.R*_*.R. 2 c++ windows directx windows-7-x64
这完全让我疯狂.当我编译我的程序时,我收到以下错误消息:
错误LNK2019:未解析的外部符号_D3D11CreateDeviceAndSwapChain @ 48
我知道我有所有正确的lib /和include目录(x86),我已经跟踪了这个问题,如果我去定义(F12),我得到两个符号,一个用于DirectXSDK安装目录,和一个在"c:\ Program Files(x86)\ Windows Kits\8.0\Include\um".
对于我的生活,我不知道该怎么做.我已经浏览了所有包含/排除目录,我无法解决它,我不知道该怎么做.谁能帮我?
我自己遇到了这个错误,并在评论中用Luke的建议解决了这个问题.
假设您正在使用Visual Studio,请尝试打开项目的属性窗口,然后导航到链接器 - >输入.在"附加依赖项"下添加d3d11.lib,然后再次尝试链接.
好的.在驾驶疯狂之前,请查看:
你链接到与你的应用程序相同的架构:x86,x64,arm(这是常见的骗局=))
C:\Program Files (x86)\Windows Kits\8.0\Lib\win8\um\x86
C:\Program Files (x86)\Windows Kits\8.0\Lib\win8\um\x64
C:\Program Files (x86)\Windows Kits\8.0\Lib\win8\um\arm
你从同一个sdk链接lib作为你的标题(在你的源代码中,尝试显式键入路径):
#include "c:\Program Files (x86)\Windows Kits\8.0\Include\um\header.h"
#pragma comment(lib, "C:\\Program Files (x86)\\Windows Kits\\8.0\\Lib\\win8\\um\\x64\\library.lib")
检查libs本身是否正常(存在,没有损坏):卸载旧的DXSDK和Win8SDK,然后重新安装其中一个,尝试它,而不是另一个.(另外,最好只从旧SDK中复制某个文档和教程,卸载它并完全忘记它)
尝试new #pragma linker(not #pragma lib)with verbose flag来获得一些链接器输出:
#define USE_OLD_DXSDK
#ifdef USE_OLD_DXSDK
#pragma comment(linker "c:\\path\\to\\old_sdk\\d3d11.lib -verbose")
#else
#pragma comment(linker, "c:\\path\\to\\new_sdk\\d3d11.lib -verbose")
#endif
另一种方式:创建一个新的小应用程序,并尝试D3D11CreateDeviceAndSwapChain从头开始编写东西.只有#include和link现在需要什么,没有别的.尝试重现您的链接器错误,以了解它为什么会发生,并找出如何在您的主应用程序中修复它.
快乐的编码!
| 归档时间: |
|
| 查看次数: |
4863 次 |
| 最近记录: |