DX各种问题解决方法汇总

更新时间:2023-05-31 14:23:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

DX各种问题解决方法汇总

DX图形编程各种问题汇总

目录

1.

2.

3.

4.

5. 安装SDK出现S1023错误的解决方法 ........................................................................... 1 报错error LNK2001 .......................................................................................................... 1 HelloWorld在VC2010中报错问题解决 (2011数媒2班 刘宏侠) ........................ 2 directX安装好后,配置VS环境的方法(2011数媒2班 张亚莹) .......................... 3 不缺少括号的情况报错fatal error C1075: 与左侧的 大括号“{”(………..”)匹配之前遇

到文件结束(2011数媒2班 贾文杰) ................................................................................ 5 6. 报错无法解析的外部符号 _main,该符号在函数 ___tmainCRTStart的问题 (2011

数媒二班 郭云鹏) ................................................................................................................. 6 7.

8.

9.

D3D中的像素格式问题 (2011数媒一班 刘思凡) .................................................. 7 C++ 模版函数不能够将定义和声明分开写(2011数媒一班 周杨稀) .................... 8 如何在D3D字体中显示中文字体(2011数媒二班 贾文杰) .................................... 8

1. 安装SDK出现S1023错误的解决方法

可能已经安装早期版本,在控制面板里面删除

Microsoft Visual C++ 2010 x86/x64 redistribuable - 10.0.(number over 30319)

2. 报错error LNK2001

d3dutility.obj : error LNK2001: unresolved external symbol _Direct3DCreate9@4 d3dutility.obj : error LNK2001: unresolved external symbol __imp__timeGetTime@0 Debug/D3DInit_cmt.exe : fatal error LNK1120: 2 unresolved externals

这是工程里没有添加库文件,可以在"工程->设置->连接" 的"对象/库模块"中添加这两个文件或者在任意一个cpp文件中(d3dUnit.cpp或者d3dutility.cpp)加入如下代码 #pragma comment(lib,"d3d9.lib")

#pragma comment(lib,"winmm.lib")

DX各种问题解决方法汇总

3. HelloWorld在VC2010中报错问题解决( 2011数媒2班 刘宏侠)

解决网址:

DX各种问题解决方法汇总

4. directX安装好后,配置VS环境的方法(2011数媒2班 张亚莹) /80294310_d.html

里面提到了VS2010和VS2012的

大家如果像我一样遇到了在添加DirectX路径的时候“工具>选项>项目和解决方案>C++目录”里出现

的情况。那么参考下下面的解决方案:

2012中添加DirectX头文件和lib文件,分两种情况:

打开属性管理器

一种是你要向单个项目添加头文件和lib文件,那就在项目上右击,选择属性,在弹出的对话框中就可以设置了

另一种是你要向所有项目通用添加DirectX的头文件和lib文件,那就在

Debug | Win32 上右击选择属性 (或者Release| Win32

),就能打开添加路径

DX各种问题解决方法汇总

的窗口了。。。

属性管理器在“视图”中打开

DX各种问题解决方法汇总

5. 不缺少括号的情况报错fatal error C1075: 与左侧的 大括号“{”( ..”)匹配之前遇到文件结束(2011数媒2班 贾文杰) 条件 :

1. 环境没有任何错误

2. 代码没有任何错误

错误描述:

编译执行,报错

fatal error C1075: 与左侧的 大括号“{”(………..”)匹配之前遇到文件结束

代码没有问题,括号完全匹配。在代码结束为止添加“}”,

继续编译,会报错,

无法解析的外部符号 _WinMain@16,该符号在函数 --- 中被引用

至此任何调试未果

解决方案:

1. 找到项目属性:

修改输出目录和中间目录:

(注:修改为 “.\Debug\”也可以,下面也需要相应修改)

2. 找 到 链接器--------》常规-------修改右侧输出文件

DX各种问题解决方法汇总

修改为:

注意,文件为相应项目的EXE文件,本例中项目为D3DINIT,所以文件为D3DINIT.exe

修改完毕,清理项目,重新生成解决方案,编译执行,通过。

不知道原理,感觉很神奇的样子。但我知道VS一向如此,见多了莫名其妙的BUG让我有个一颗淡定的心。(by 贾文杰)

6. 报错无法解析的外部符号 _main,该符号在函数 ___tmainCRTStart的问题 (2011数媒二班 郭云鹏)

原因:程序没有错,配置有问题;

方法:

将/subsystem:windows开关改为/subsytem:console 或将/subsytem:console开关改为

/subsystem:windows

DX各种问题解决方法汇总

更改方法:

右键点击-->项目,选择---->属性,属性页 窗口弹出;

接着,点击连接器->系统,在右侧会看到“子系统”选项,在这里可以选择相应的连接程序开关.

7. D3D中的像素格式问题 (2011数媒一班 刘思凡)

因为像素格式的不当导致编译通过而出现CreateDevice()_Failed的错误:

当使用d3dpp.BackBufferFormat=D3DFMT_A8R8G8B8;,编译可通过,运行正常;但将像素格式改为D3DFMT_A8R3G3B2时,在编译时不会有任何错误,但运行时会出现CreateDevice()_Failed的提示,设备创建失败,原因在于不同的像素格式与显卡相关,某些显卡可能会与某些像素格式不匹配,具体可参考

DX各种问题解决方法汇总

BackBufferFormat的相关取值:

8. C++ 模版函数不能够将定义和声明分开写(2011数媒一班 周杨稀)

即不能够在头文件中声明,然后再在cpp文件中写函数体

因为函数模板要被实例化后才能成为真正的函数,你在使用函数模板的源文件中包含函数模板的头文件,如果该头文件中只有声明,没有定义,那编译器无法实例化该模板,最终导致链接错误。

参考:/bichenggui/article/details/4207084

9. 如何在D3D字体中显示中文字体(2011数媒二班 贾文杰)

DX实验七中显示的文字只能是英文?怎么实现中文的输出呢?

注:如果直接改变文字为中文,输出则为????

步骤如下:

1. 首先改变项目所使用的字符集,从多字节字符集改为Unicode字符集。

2. 修改由于调整字符集所带来的错误

一般为:error C2664:: 不能将参数从const char [5]”转换为“LPCWSTR”

方法:在前面加上强制转换符L

3、这时还会报错,错误为:

strcpy(If.lfFaceName ,"Times New Roman");

error C2664: “¡ãstrcpy”不能将参数 1 从“WCHAR [32]”¡转换为“char *“

这是由于函数的定义形参和实参的类型不兼容,修改方式,强制转化If.lfFaceName的类型

代码如下:

strcpy((char*)If.lfFaceName ,"Times New Roman");

现在程序已经可以输出中文了。大家试一下吧。

本文来源:https://www.bwwdw.com/article/t5u4.html

Top