龙书源码编译

2023-11-09

dx龙书全名是《DX9游戏开发编程基础》,该书中的源代码没有工程,只有.h.cpp文件,这或许是作者故意为之,这样我们就可以随心所欲的移植到vc++6.0或vs2008等集成开发环境了,但是我在移植到vs2008的时候总是失败不停的报错,很是头疼,期间参考了csdn网友iuhsihsow的文章,在此表示感谢,写下这篇文章也希望初学者能少走一些弯路吧!下面我们以第二章的第一个示例初始化来说明编译过程:

1.创建一个win32项目,如果一开始不小心创建为控制台,则可以在项目属性的链接器,系统,子系统中修改为windows

许多新手在编程时经常遇到“无法解析的外部符号 _main,该符号在函数 ___tmainCRTStartup 中被引用”这样的错误,最近看了一些这方面的书籍,现将解决方案大概叙述一下:

连接程序在负责连接可执行程序时,选择相应的c/c++运行时启动函数。如果设定了/subsystem:windows连接程序开关,那么连接程序会试图寻找WinMain或wWinMain函数。如果连个函数都不存在,那么就会返回一个“一个未解决的外部符号”(无法解析的外部符号 _main,该符号在函数 ___tmainCRTStartup 中被引用)

同样,如果设定了/subsystem:console连接程序开关,那么连接程序就会试图寻找main函数或者wmain函数,如果找不到这连个函数是,连接程序返回unresolved externel symbol错误信息。

变成新手容易犯的一个错误是,创建应用程序时选择了错误的应用程序类型。例如,开发人员创建了一个新的Win32应用程序项目,并给这个项目创建了一个入口函数main。在这种情况下,创建应用程序时,开发人员就会看到一个连接程序的错误信息。这是因为Win32应用程序项目设置了/subsystem:windows连接程序开关,但是却找不到相应的Winmain或者wWinmain函数。这是侯你可以有以下几种解决方案。

1 将main函数改为Winmain函数

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

3全部删除/subsytem:windows开关,让连接程序根据源代码中实现的函数进行正确的操作。

更改/subsystem:windows的方法:

右键点击项目,选择属性,会看到如下的选项框,点击连接器->系统,在右侧会看到“子系统”选项,在这里可以选择相应的连接程序开关 
2.将所有的文件都copy到工程的文件目录下,右键点击头文件文件夹添加现有项然后选择copy的所有头文件,同理,添加源文件选择并添加cpp和其他资源


3.删除原有工程的含有main的文件(如果建立的是空项目,就不用删除了),如,test.cpp这样程序就会找到源代码中的mian入口了。然后忽略预编译头

4.设置dx库,头文件,dll的路径


5.链接库:需包含以下头文件
#include <d3dx9.h>
#include <d3d9.h>
#include <string>


或者
#pragma comment(lib,"d3d9.lib") 
#pragma comment(lib,"d3dx9.lib")
#pragma comment(lib,"winmm.lib")
很多人开始的时候并没有附加winmm.lib库或者在头文件中也没有书写#pragma comment(lib,"winmm.lib")语句,如果使用的vs2008就会出现以下的错误:无法解析的外部符号 __imp__timeGetTime@0,该符号在函数 "int __cdecl d3d::EnterMsgLoop(bool (__cdecl*)(float))" (?EnterMsgLoop@d3d@@YAHP6A_NM@Z@Z) 中被引用。因为在龙书源代码中包含了timeGetTime函数, 检取从WINDOWS开始已逝去的毫秒数,此函数比timeGetSystemTime 函数开销小。

6.编码


选择多字节字符集
7.将此工程作为一个模板,以后就可以通过添加响应的头文件和源文件以及资源文件就可以使用了。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

龙书源码编译 的相关文章

  • Java Servlet 简单的登录代码

    需要的jar包 commons beanutils 1 8 0 jar druid 1 0 9 jar spring jdbc 5 0 0 RELEASE jar spring beans 5 0 0 RELEASE jar mysql c
  • C++(19)——智能指针shared_ptr

    shared ptr的概念 shared ptr实现共享式拥有 shared ownership 概念 多个智能指针可以指向相同对象 该对象和其相关资源会在 最后一个引用 reference 被销毁 时候释放 基本原理 智能指针是 几乎总是

随机推荐

  • MySQL数据库学习——SQL分类——DDL

    不能重复创建 可以用if not exists来避免这种情况 比如我要创建一个test的数据库 用if not exists系统就会创建 删除guzifenshisb这个数据库 使用数据库和查询数据库
  • Basic Level 1083 是否存在相等的差 (20分)

    题目 给定 N 张卡片 正面分别写上 1 2 N 然后全部翻面 洗牌 在背面分别写上 1 2 N 将每张牌的正反两面数字相减 大减小 得到 N 个非负差值 其中是否存在相等的差 输入格式 输入第一行给出一个正整数 N 2 N 10 000
  • protobuf

    https www jianshu com p 4b987ef826d3
  • 【前端部署】多个vue项目部署到Linux服务器

    前端部署 多个vue项目部署到Linux服务器 文章目录 前端部署 多个vue项目部署到Linux服务器 前言 一 修改vue项目中配置 1 修改vue config js 2 修改router文件下的index js 3 打包项目 二 修
  • 内存四区:代码区、全局区、栈区、堆区 代码分析

    阅读前请看一下 我是一个热衷于记录的人 每次写博客会反复研读 尽量不断提升博客质量 文章设置为仅粉丝可见 是因为写博客确实花了不少精力 希望互相进步谢谢 文章目录 阅读前请看一下 我是一个热衷于记录的人 每次写博客会反复研读 尽量不断提升博
  • command not found: tensorboard

    zsh command not found tensorboard 问题描述 我的深度学习框架采用的是pytorch 代码中使用tensorboardx来写日志的 之前使用tensorboad可以正常打开日志 但现在提示命令未找到 解决方案
  • 成功解决3dmax中,旋转时透视图可以看穿物体

    成功解决3dmax中 旋转时透视图可以看穿物体 目录 解决问题 解决思路 解决方法 解决问题 成功解决3damx中 旋转时透视图可以看穿物体 解决思路 有可能透视图出了毛病 解决方法 透视图看穿物体时 有可能透视图出了毛病 只需要将切换为正
  • 每日思维模型——管理4R模型

    什么是管理 人是管理的核心要素 通过管理 使人员达成共识 按照流程及规划工作 最终达成目标的系列活动 管人不是目的 发挥人组成的团队效应 高效完成任务才是目的 一 4R法则 4R法则可视为管理下属的总体原则 由四个 R 开头的四个英文单词组
  • 关于UnityHub更换位置后找不到编辑器以及登录界面白屏的问题

    若之前已经有该版本的unity3d 更换位置后显示找不到 可以找出它所在的位置 然后在UnityHub的安装选项中 点击添加已安装版本 该问题就能解决 若显示未登录 且登录界面白屏 可通过以下三个方法解决 关闭hub 在资源管理器中结束un
  • MybatisPlus从入门到精通-三更草堂补充版

    MybatisPlus从入门到精通 基础篇 1 概述 MybatisPlus是一款Mybatis增强工具 用于简化开发 提高效率 它在 MyBatis 的基础上只做增强不做改变 为简化开发 提高效率而生 官网 https mp baomid
  • 关于训练平台中Dockerfile与运行文件的编写

    何为Dockerfile 为了给特定的程序提供特定的运行环境 常用的解决办法是就构建镜像 而Dockerfile就是构建镜像的源代码 Docker程序根据这份源代码在镜像中安装 拷贝文件 设置环境变量 Dockerfile文件编写 下面列举
  • svn搭建

    Subversion SVN 是一个开源的版本控制系統 也就是说 Subversion 管理着随时间改变的数据 这些数据放置在一个中央资料档案库 repository 中 这个档案库很像一个普通的文件服务器 不过它会记住每一次文件的变动 这
  • 教你怎样娶比尔.盖茨的女儿

    无意中在网上看见这篇文章 仔细体会 能让人领会很多东西 一位优秀的商人杰克 有一天告诉他的儿子 杰克 我已经决定好了一个女孩子 我要你娶她 儿子 我自己要娶的新娘我自己会决定 杰克 但我说的这女孩可是比尔 盖茨的女儿喔 儿子 哇 那这样的话
  • disruptor_环形缓冲区– Disruptor背后的数据结构

    disruptor 环形缓冲区 Disruptor背后的数据结构 Disruptor是一个高性能的库 用于在线程之间传递消息 该库由LMAX Exchange公司于几年前开发和开源 他们创建了此软件来处理其零售金融交易平台中的巨大流量 超过
  • deep learning 编程作业总结4----调节神经网络之初始化,正则化,梯度校验

    一 初始化参数 神经网络中一个小单元的运算可由 z wx b 和 a g z 这两个式子来概括 在刚开始的时候需要对参数w和b赋初始值 如果赋值为0那么是没有意义的 如果赋值为一个简单随机数 那么会产生梯度爆炸和梯度消失 因此应采用抑梯度异
  • pyqt5-QGraphicsView

    一 QGrahpics框架 这个框架是一个渲染引擎的上层框架 通常也叫Scene View 由QGraphicsview QGrahpicsScene QGraphicsItem三个框架类组成 QGrahpicsView是从原生的QWidg
  • C++11 多线程之 packaged_task

    packaged task是什么 template lt class R class Args gt class packaged task lt fn Args gt packaged task是类模板 定义于future头文件中 它包装
  • git add 回滚_Git的reset命令详解

    git reset 这个命令是版本控制的精髓 非常实用且常用 真香警告 一 为什么 我们玩闯关游戏的时候 经常要把游戏进度保存 以便我们随时能够回到那一刻 特别是打BOSS之前 做好保存 发现打不过就马上重来 或者一年半载后 重玩游戏 就可
  • nexus3手动上传jar文件(包括不可执行jar打包配置)

    前言 最近用nexus3管理工具jar包时 发现多模块依赖引用找不到依赖包 依赖包不会关联下载 一直以为是打包的问题 还尝试着把所有依赖都打进工具jar中 结果都无法正常启动项目 最后才发现是pom的问题 下面记录我的解决方案 举个例子 一
  • 龙书源码编译

    dx龙书全名是 DX9游戏开发编程基础 该书中的源代码没有工程 只有 h cpp文件 这或许是作者故意为之 这样我们就可以随心所欲的移植到vc 6 0或vs2008等集成开发环境了 但是我在移植到vs2008的时候总是失败不停的报错 很是头