又来折腾了
目录
安装visual studio和 c++
写程序这事,无论写的是多小的一个程序都不会省心的:
首先是安装vs2019,一开始只是搞个C#工具,装了.net和基本的c++支持;
没留意,没安装:c++桌面xxx 工具
后面想起要CPP开发,突然就安装不上扩展,连不了网络下载,解决方法
===================================================
(网上很多说改hosts方法不行,以下小哥改dns方法可以下载)
我的问题跟题主的一摸一样,折腾了两三天,还是下不了。百度很多方法试过了没用。直到今天,我们C++老师在群里发了,我才解决了。真的可以下!!!而且方法很简单具体方法:
修改电脑网络的DNS地址,改成114.114.114.114(国内的DNS地址)
备用地址改成8.8.8.8或8.8.4.4(谷歌公司的DNS地址)。
修改的方法可以百度。我修改了一下就可以下载了,真的是太开心了呀!!!
==================================================
解决问题 一
安装DirectX
Download DirectX Software Development Kit from Official Microsoft Download Center
解决步骤:
(1)要解决这个问题,在June 2010 DirectX SDK安装之前,卸载计算机中存在的所有版本的Visual C++ 2010 Redistributable组件。
可以在程序和功能面板中直接卸载。或者,也可以在命令行中运行以下命令卸载:
MsiExec.exe /passive /X{F0C3E5D1-1ADE-321E-8167-68EF0DE699A5}
MsiExec.exe /passive /X{1D8E6291-B0D5-35EC-8441-6616F567A0F7}
解决问题:二
链接项目
这也是很头疼的一个问题
————————————————
DirextX11工程出现”LNK1104:无法打开文件d3dx11.lib”可能的原因:
项目属性->VC++目录->库目录中,添加的是”D:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\Lib”。
原来在”.\Lib”下面有\X86和\X64两个文件夹,里面各有一份d3dx11.lib,所以需要指定是在X86下还是在X64下,改成”D:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\Lib\X86”就行了。
————————————————
解决问题:三
一天又过去了。。。。。。。第二天。。。。。
如果,你也是按照Direct3D龙书上说的做,《Introduction to 3D Game Programming with Direct3D 11》,(以为这本书在说DirectX,以为在说game program,实际和游戏开发没半点关系,实际在说3d的数据基础)大概率会碰到这个问题
FXC : error X3501: 'main': entrypoint not found
由于我们的项目叫做WindowProject1
当然也有这个同名的类,
WindowProject1.cpp
下意识会以为出错在于这个文件,,,事实并不是的
解决方法参考:
c++ - FXC : error X3501: 'main': entrypoint not found - Stack Overflow
很可能是因为我在项目里,混进了.fx文件
解决问题 四
谢天谢地,最终只花了一天半的事件,解决了1~4个问题,坑还不算多
启动代码后,界面如下:
其他就都是小问题了
1.用了CreateVertexShader的方法,shader文件需要放在跟目录下(相对路径暂时不知道怎么写)
d3dDevice->CreateVertexShader(VertexShaderBuffer->GetBufferPointer(),VertexShaderBuffer->GetBufferSize(),NULL,&md3dVertexShader)
2.在代码编辑器窗口的,上部,提供下拉列表,可快速定位,所有类,所有方法
3.Ctrl + K + O (Ctrl + KO),不是0,可快速在.cpp和.h头文件之间切换
4.官方CPP入口这么写,但也可以随意
//vs 2019 -cpp
int APIENTRY wWinMain(_In_ HINSTANCE hInstance,
_In_opt_ HINSTANCE hPrevInstance,
_In_ LPWSTR lpCmdLine,
_In_ int nCmdShow)
这样也行
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
{
5.静态方法会在编译时即检查重复
//LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
6.Direct Effect没编译好