DirectX10+MSVC

Windows 10下用Rust编译Zed编辑器的5个常见坑及解决方案(附详细配置) 本文详细解析了在Windows 10环境下使用Rust编译Zed编辑器时常见的5个问题及解决方案,包括Visual Studio Build Tools版本冲突、Rust工具链与MSVC集成问题、图形后端选择、依赖下载超时以及编译性能优化。特别针对Visual Studio Build Tools的安装与配置提供了详细指导,帮助开发者高效完成Zed编辑器的编译任务。 阅读详情

最近在学 DirectX10,今天终于使用 MSVC (visual studio和visual c++使用的c/c++编译器) 成功编译了第一个示例程序。

先搞 DirectX:

查阅资料了解到,windows10其实是自带 DirectX12 ,但那只是运行时支持,而不是 DirectX SDK(软件开发工具包) 。所以需要自己下载 DirectX10。那就去 MSDN (算是微软官网)下载相关资源,得知 DirectX 的后续版本已经被整合到了 windows SDK 中,这个 SDK 占用空间很大,而且只能装在 C 盘。

幸好仍然提供旧版本的 DirectX SDK 下载,下载之后,安装在 E盘。

DirectX文档结构
最重要的就是 include 和 lib 文件,里面就是头文件和相应的库文件。

最初的打算是使用 MinGW 的 g++ 命令编译 DirectX10 程序,但是经过多次尝试还是以失败告终,总是会有莫名奇妙的错误。只能换成 MSVC 。又通过查资料得知可以单独下载编译器,而不需要安装完整的visual studio IDE(众所周知,Visual Studio动辄好几个G,十分臃肿,最关键的是其中的许多东西其实是用不到的)。

具体方法是下载 visual c++ build tools ,在安装时只选择编译器即可。注意:无法选择安装路径。默认装到C盘。安装完成后一看,c盘又小了一个G,肯定又是安装了很多不需要的东西。 (ーー゛)

visual c++ build tools 安装完成后在开始菜单栏就会出现相应的命令行界面,选择 Visual C++ 2015 x64 Native Command Prompt(其他的工具可自行尝试), 最关键的是 cl 命令,这就是编译命令。

cl /EHsc /Fea.exe InitDirect3D.cpp d3dApp.cpp d3dUtil.cpp GameTimer.cpp 

使用上述命令运行示例程序,此命令会将编译后的文件自动链接为exe文件

/EHsc 说明程序内部使用了异常处理,类似 Java 的 try catch 那种
 /Fe 重命名exe文件(默认是主函数所在程序名)

InitDirect3D.cpp 是程序入口,其余 cpp 文件是依赖文件。
使用预处理命令链接 lib 库,(此预处理命令 MinGW 是不支持的)

#pragma comment(lib, "gdi32.lib")
#pragma comment(lib, "user32.lib")
#pragma comment(lib, "dlib/d3d10.lib")
#pragma comment(lib, "dlib/d3dx10d.lib")

此示例程序使用了 Windows API,所以应包含有 windows.h 文件。

gdi32 user32 就是Windows API 的动态链接库,是 windows 自带的 dll 文件,d3d10 d3dx10d 是此程序使用到的静态链接库,我将它们从 DirectX 的 lib 文件夹拷贝到了项目的 dlib 文件夹中。

执行编译命令,一大堆报错。

首先是类型转换错误,比如:type ‘float’ unexcepted ,或者 cannot convert to … 等等;在网上找了一大堆资料,都没说到重点,有说把示例程序改成非 UNICODE 码的,还有说更改cpp文件保存时使用的字符集的。我在前两天刚看了 windows程序设计(第五版) 一书,再加上观察报错,认为这个错误是因为 UNICODE 的编码问题。也就是说函数参数要求非 UNICODE 码,但传入的是 UNICODE 码。

我想起在 windows 程序设计一书中作者这样写道: 如果程序中定义了名为 UNICODE 的宏,那么函数就处理 UNICODE 编码,如果没有定义,那就是非 UNICODE 码,比如 ASCII 码,或者扩展 ASCII 码。(实现此技术并不难,使用 #ifdef 对函数名进行条件宏替换就可以做到)

于是在include的头文件之前 定义了 UNICODE 宏,就像下面这样:

#ifndef D3DAPP_H
#define D3DAPP_H
#define UNICODE     //我自己加的,位于 d3dApp.cpp 文件中

#include "d3dUtil.h"
#include "GameTimer.h"
#include <string>

再次编译错误少了一大半,剩下的错误是找不到某些 DirectX10 的头文件。
再次经过相当长时间的折腾,发现 MSVC 的include文件夹在:

C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include

将头文件放入此文件夹即可。

注意: 编译信息提示缺什么再放什么,不要放多余的头文件,因为在

C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um

文件夹下还有系统自带的 DirectX 头文件(为什么这里也有,奇怪(ーー゛))。所以如果两个地方有相同的头文件,就会引发 “宏重定义” 错误。当然,也可以直接将需要的头文件拷贝到项目中,只需将 include<> 改为 include"" (#include< >指示预处理程序到预定义的缺省路径下寻找文件;#include“ ”指示预处理程序先到当前目录下寻找文件,再到预定义的缺省路径下寻找文件。)

做完这一切,再次运行 cl 命令,终于看到了 a.exe,运行得到结果:

哈哈哈
写在结尾: 其实到这就行了,但是我不想每次编译 cpp 文件都输入长长的 cl 命令,再次查询资料了解到了 makefile 技术,它可以实现自动编译,语法很简单,这就不写了,下面是我的 makefile:

Makefile

Rust on Windows:从 MSVC 到 MinGW,我为什么最终又回到了 MSVC 的怀抱? 本文探讨了在Windows平台上使用Rust开发时,MSVC与MinGW工具链的选择问题。通过对比两者的历史渊源、兼容性挑战、调试体验和性能优化,作者最终回归MSVC工具链,并分享了配置实践。文章深入分析了`x86_64-w64-mingw32-gcc`等错误,帮助开发者做出更明智的选择。 阅读详情

相关推荐

Windows 11 上 Rust 开发环境二选一:MSVC 还是 MinGW?我踩坑后建议你无脑选这个

本文探讨了在Windows 11上配置Rust开发环境时,选择MSVC还是MinGW工具链的优缺点。通过实际项目经验对比,作者指出MSVC在系统兼容性、调试体验和构建速度上的优势,尤其适合Windows原生开发。同时分析了MinGW在跨平台项目中的适用场景及常见问题,如链接错误和性能损失,最终建议大多数开发者优先选择MSVC工具链。

weixin_33462167的博客 316

eclipse+cdt+mingw开发DirectX程序

由于想转到gcc/g++的平台上做开发,于是尝试了eclipse+cdt+mingw开发,测试良久后终于成功编译,过程大致如下:1.首先当然是下载eclipse+cdt,现在cdt已经出到5.0,c++重构功能非常丰富2.光有cdt,没有编译器是不行的。下载mingw+MSYS,安装之后要注意设置系统环境变量。你可以写一个简单的c++ helloworld测试,编译的时候可能遇到找不到cc

zwywilliam的专栏 3840

Directx3D9学习之一:环境搭建与运行第一个程序环境配置(基于VS2012与win7)

Directx3D9学习之一:环境搭建与运行第一个程序环境配置(基于VS2012与win7) 作者:lhqsine 一、搭建《DIRECTX.9.0.3D游戏开发编程基础》开发环境与第一个程序 1、下载directX库 vs2012以后的版本都集成了基本的directx库,所以如果不需要用到directx3D的扩展库(例如d3dx8~11.lib),则可以直接使用。但是龙书中则用到了d3d

My Way 9907

Windows下 DirectX SDK 配置检验

windows 下 directX sdk 的安装、配置、测试、出错分析。

actanble的博客 4559

别再傻傻分不清了!一文搞懂GCC、MinGW和MSVC在Windows开发中的真实区别

本文详细解析了GCC、MinGW和MSVC在Windows开发中的核心区别,帮助开发者根据项目需求选择合适的编译器。从安装配置到性能优化,全面对比了MinGW的轻量化与跨平台优势,以及MSVC的Windows原生支持与调试体验,为C/C++开发者提供实用指南。

weixin_30813225的博客 491

Windows平台FFmpeg 6.0 MSVC编译与ffplay Win32移植实战

音视频处理是多媒体开发的核心领域,其关键在于编解码器与框架的灵活运用。FFmpeg作为开源的音视频处理库,通过其模块化架构支持广泛的编解码格式。在Windows平台进行开发时,直接使用预编译库常面临版本滞后或功能缺失的问题,因此从源码编译成为获取定制化功能的必要手段。MSVC编译器因其在Windows生态中的深度集成,能生成高性能且兼容性强的本地二进制文件。通过结合MSYS2提供的类Unix构建环境,开发者可以高效管理依赖并执行自动化构建脚本。这一技术组合尤其适用于需要深度集成Windows原生GUI或调用

weixin_32187037的博客 286

DirectX10怎么下载和安装,DirectX10丢失的几个有效修复方法

DirectX 10 是微软推出的一套用于 Windows 操作系统的多媒体编程接口。为 Windows 平台上的图形和多媒体应用提供了更强大的支持,推动了游戏和相关领域的发展。

Cybertronnnnnn的博客 2686

解决Windows游戏DirectX报错全攻略

DirectX作为微软开发的底层图形接口,是游戏和图形应用运行的核心组件。其动态链接库(DLL)机制通过模块化设计实现高效渲染,但版本碎片化和组件损坏常导致d3dx9_43.dll丢失等错误。通过系统文件检查器、DXDiag诊断工具等官方方案,配合显卡驱动优化,可解决90%的Direct3D初始化失败问题。针对游戏开发者和高级用户,DLL依赖分析工具和注册表修复能处理复杂兼容性问题。合理配置虚拟内存和自动化维护脚本,可显著提升《赛博朋克2077》等大型游戏的运行稳定性。

weixin_30736301的博客 536

C++-DLL开发环境搭建

windows mingw64 c++简易开发编译工具,集成Direct3D FMOD Cmake编译工具。将Direct3D-SDK中include头文件和lib文件单独取出并放置在根目录下。霸王•吕布 / MinCPlusCompiler · GitCode。实现D3DModelManager完成基本模型加载。

骑砍战团&霸主MOD开发 1183

MinGW 和 MSVC*是两个最主流的编译器阵营

MSVC和MinGW是Windows平台两大C++编译器,存在根本性差异。MSVC是微软原生编译器,适用于Windows软件开发;MinGW是GCC的Windows移植版,适合跨平台开发。两者二进制接口不兼容,函数命名规则不同,混用会导致程序报错。开发时应避免混搭:MSVC项目需配套MSVC编译的第三方库和DLL,并确保系统路径优先指向MSVC。根据需求选择编译器:Windows深度开发选MSVC,跨平台项目选MinGW。核心原则是保持编译环境一致性,避免不同编译器产物混用。

288

DirectX视频播放项目实战源代码解析

在介绍如何设置VC++和MFC开发环境之前,重要的是了解MFC(Microsoft Foundation Classes)库是作为VC++(Visual C++)开发环境的一部分,它提供了一套封装好的C++类用于简化Windows API的使用。为了充分利用这些工具进行多媒体应用开发,我们必须对环境进行一些基本配置。安装Visual Studio:首先,安装最新版本的Visual Studio,这包括了VC++工具和MFC库。确保在安装过程中选择了C++开发和MFC支持选项。配置项目设置。

weixin_35754962的博客 885

Windows10开发环境

Windows10 SDK自带directx相关静态库 库文件: d3d11.lib dxgi.lib dxguid.lib D3DCompiler.lib winmm.lib

qq_24737399的博客 504

MinGW使用DirectXCompute的实例,CLion可直接运行

在Windows下MinGW使用DirectXCompute使用硬件加速进行数据的并行计算的实例。已经包括了HLSL等所有的问题,可以在CLion中可以直接编译运行。

3Dmigoto技术指南:修复DirectX游戏立体视觉问题的完整解决方案

3Dmigoto是一个开源的DirectX包装器工具,专门用于修复游戏中损坏的立体视觉效果。该项目通过拦截和修改DirectX API调用,实现对游戏渲染管线的深度控制,从而解决各种立体视觉兼容性问题。对于使用3D立体显示技术的游戏玩家和图形开发者而言,3Dmigoto提供了强大的工具集来诊断和修复立体渲染问题。 ## 技术架构与工作原理 3Dmigoto的核心是一个DirectX 11/10

gitblog_00186的博客 1033

模电学习笔记(十二)——跨阻放大器

模电学习笔记(十二) 跨阻放大器 跨组运算放大器是将电流信号转换成为电压信号,电流到电压增益基于反馈电阻。 设计目标: 输入 输出 带宽 电源 0A 100uA 0V 7V 20kHz 15V -15V 1.计算R1的值(增益电阻器) 2.计算C1的值满足电路带宽 ...

tang11081023的博客 2万+

实战演练:基于Veristand Custom Device的硬件在环(HIL)数据流控制模块开发

本文详细介绍了基于Veristand Custom Device的硬件在环(HIL)数据流控制模块开发实战。通过LabVIEW环境配置、动态路由逻辑构建、实时处理核心开发及性能优化等关键步骤,帮助工程师快速掌握定制化HIL测试系统的开发技巧,提升测试效率与准确性。

weixin_29206669的博客 475

解决MSVC DLL文件缺失的终极指南:从诊断到修复的全面策略

在使用Microsoft Visual Studio(MVS)进行软件开发的过程中,可能会遇到与MSVC(Microsoft Visual C++)相关的DLL文件缺失或损坏的问题。这些DLL文件对于软件运行至关重要,缺少它们可能会导致程序无法启动或者运行时出现错误。本文将探讨这些问题的原因,并提供有效的解决方案。

Xixix777的博客 1976

PSCAD学习笔记(1)Project Settings(重点snapshot设置)

若不勾选,则横坐标为实际时间2-7s,故障显示在第3s发生。图片中时间坐标轴显示为0-5s,故障时刻显示为第1s,即0-1s展示系统稳态,1-5s展示系统发生故障后的暂态响应,如何通过快照文件实现?勾选该项后,使用快照文件启动仿真会将仿真起始时间强制设置为0s,反之不勾选则依据快照文件保存的时间轴继续(即坐标为实际时间)。如果已有的快照文件保存的是0s至5s的仿真内容,则仿真运行时间从5s开始,到10s结束。如果已有的快照文件保存的是0s至2s的仿真内容,则仿真运行时间从2s开始,到7s结束;

gwenh的博客 7343

游戏编程之DirectX的修炼:一(编程环境和DirectX安装)

说都不说那么多,工欲善必先利其器,还是要首先搭建下环境,在这里,夕霞用的是win10的系统,当然了大家用其他的系统也是完全没有问题的。如果是win10系统的小伙伴可以设置下开发者模式,打开设置->更新与安全->针对开发人员,选择右面的开发人员模式确定就好。就是下面的啦。                          好了接下来们程使用的IDE了,在这里我用的是VS2017Comm

夕霞的博客 920

别再手动调参了!用Optuna+PyTorch搞定Transformer时序预测超参数(附完整代码)

本文详细介绍了如何利用Optuna和PyTorch实现Transformer时序预测模型的自动化超参数调优。通过贝叶斯优化技术,显著提升单变量时序预测的效率和准确性,并附有完整代码实现。文章涵盖模型架构设计、数据预处理、Optuna调参实战及生产环境部署建议,为开发者提供一站式解决方案。

weixin_33704234的博客 577

倍福 MODBUS TCP/IP通信

(*默认字符串80字节,此处声明为255字节,可以一次性传42个UINT数据.5位整数加一个空格,即每个数据6字节*)(*---------------------------------------- 以下为用户程序 ----------------------------------------*)(*读回并换算后的值*)(*准备写到PLC的值*)(*用于比较两次读回的值相差多少,以估计通讯的速度, Act_CalcDiff*)(*用于切换读和写,Act_Protocal*)

qq_33280096的博客 1367

DirectX9.0+3D游戏开发编程基础(PDF+源码)

DirectX9.0+3D游戏开发编程基础(PDF+源码) 去发现同类优质开源项目:https://gitcode.com/ 本仓库提供了一个关于DirectX9.0和3D游戏开发编程的学习资源,包括PDF教程和对应的源码。该资源非常适合希望学习DirectX9技术的开发者,其中包含的代码已通过MSVC2007编译,可以直接用于学习和实践。 内容介绍 PDF教程:详细介绍了DirectX9.0的...

gitblog_06743的博客 568

Sony DPT RP1/CP1破解攻略

前言 自己有一台Sony DPT CP1和一台kindle,两个都已经用了很多年。直到最近发现微信读书上经常可以找到一些免费而且不错的书,所以就萌生了在两台机器上使用微信读书的想法。kindle比较容易实现,直接打开内置浏览器,进入微信读书网页版就行了,而Sony的电纸书则只能通过破解+安装微信读书的方式实现。大概弄了两三个小时吧,也遇到了一些问题,所以这里记录一下整个过程,希望能方便后来的使用者。 首先感谢HappyZ, osc_t5nbj8ds。前者是提供公开破解的方法的大神,后者则是解决了我遇到的问题

weixin_43467572的博客 1万+

VS2008整合DirectX9.0开发环境

微软的的东西还是很庞大,很复杂,很不好用....但是看到directX自带的那些sample的时候,还是果断呆掉了,我想说,我也要做出这个! 接着是花了将近一天的时间完成来搞定微软的这一套图形开发的环境。 准备工作: win7旗舰版  vs2008 express(比较轻量) directX 9.0SDK 网上能下到得最新版的是2010年的那个版本,微软官网下载不了。 接下来可以动

爱冒险的技术宅 6025

Gromacs空蛋白模拟实战:从PDB文件到动力学轨迹的完整流程解析

本文详细解析了使用Gromacs进行空蛋白分子动力学模拟的完整实战流程。从PDB文件处理、力场选择与拓扑构建,到模拟盒子创建、溶剂化与电荷中和,再到能量最小化、NVT/NPT平衡及最终的生产模拟与基础分析,提供了每一步的命令详解和关键注意事项,旨在帮助计算生物学研究者系统掌握这一核心研究工具。

weixin_28454475的博客 276

YOLOv11改进 | Mamba-YOLOv11-L:基于SSM的高效全局建模,精度与效率的双重突破

摘要: 本文提出Mamba-YOLOv11-L,通过集成状态空间模型(SSM)改进YOLOv11的全局建模能力。针对YOLOv11在复杂场景中全局依赖缺失、精度-效率矛盾等问题,SSM以$O(N)$计算复杂度实现长程语义捕捉。改进后的模型在工业缺陷检测(Recall↑12%)、边缘设备部署(内存↓16%)、多尺度目标检测(小目标mAP↑9%)等场景表现优异,推理速度保持>40 FPS。核心创新包括轻量化SSM模块设计(稀疏状态转移+局部上下文融合)及与YOLOv11骨干的深度集成,代码实现展示了SSM

走向CTO的路上... 570
上一篇: vigenere加密解密
下一篇: LR分析程序
布衣之怒
博客等级 码龄7年 1粉丝 14原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值