proof 发表于 2024-4-12 09:34:40

求助: C++代码 无法通过

《游戏编程入门(第4版)》,下载的随书源码。
书内采用VS2013版本。DirectX版本未指明,我用的是DX9。


前10章的例程,经调试微改后,都成功执行。
但第11章的例程,新加入音频效果。编译错误。


源码度盘下载:https://pan.baidu.com/s/1sMdtAyVKXYgqGJcxvj6kCQ?pwd=744x


环境:C-Free 5.0 + DirectX 9.0
https://img.mydigit.cn/forum/202404/11/164025whzkz566wtoxb1w9.png
32,33,35,37行 分别报错。
error: expected primary-expression before ';' token


32    wc.hIcon         = NULL;
33    wc.hCursor       = LoadCursor(NULL, IDC_ARROW);
34    wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
35    wc.lpszMenuName= NULL;
36    wc.lpszClassName = APPTITLE.c_str();
37    wc.hIconSm       = NULL;


问题是,这个MyWindows.cpp,和6~10章的MyWindows.cpp完全一样,一个字符不差。
前几章的,都编译通过,执行成功。根本没报这几行错误。


貌似是NULL定义问题,可是前几章完全相同的MyWindows.cpp为什么不报错?


proof 发表于 2024-4-12 09:35:39

之前也报错:sal.h: No such file or directory


百度原因:
  sal.h免费下载,使用DirectSound时用;C-Free编程时没有,只有安装VS后库里才有。
  C-Free编程时有时会缺少这个东西,安装VS库里才自带这个;可以下载后直接使用,省的安装VS。我从VS2017库里找到的。
  在网上下载sal.h文件并拷贝到所在目录(C:\Program Files\Microsoft SDKs\Include)即可。
  sal.h下载:http://pan.baidu.com/s/1hswd5tU


  于是下载了sal.h,放到lib或include里。
  貌似是NULL定义的问题。sal.h里面确实有很多null ,比如:
#define _$null      Null=SA_Yes
#define _$maybenull   Null=SA_Maybe
#define _$notnull   Null=SA_No
……
    #define __null                  __declspec("SAL_null")
    #define __notnull               __declspec("SAL_notnull")
    #define __maybenull             __declspec("SAL_maybenull")
……
    #define __null
    #define __notnull
    #define __maybenull


难道是这个原因?


proof 发表于 2024-4-12 15:52:52

哪位网友可否下载一楼的源码,在本地编译后,上传一个 test.exe ? (若不允许exe类型,可放入rar压缩包,上传)
看看是什么效果。


linshi456 发表于 2024-4-12 15:56:11

建议先从windows程序设计和windows核心编程这两本书经典书籍开始练手,积累经验

softwarezheng 发表于 2024-4-14 14:28:22

感谢分享
页: [1]
查看完整版本: 求助: C++代码 无法通过