Direct3d基础一__CPP基础之碰到无法打开源文件D3DX11.h如何解决

又来折腾了

目录

安装visual studio和 c++

安装DirectX

链接项目

其他就都是小问题了

参考:


安装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没编译好

参考:

Direct3D11学习:(一)开发环境配置 - 郭小雷 - 博客园

猜你喜欢

转载自blog.csdn.net/avi9111/article/details/123564725