【VS2013编译DirectX Tutorials时遇到的错误】FXC : error X3501: 'main': entrypoint not found
修改于2015年9月6日:
去年写这篇解决方案的时候其实对着色器编程还一知半解,摸索了一个治标不治本的方法解决问题,结果被一个CSDN的博主原封不动抄了去,还打上个原创的标签= =,简直无语。。。
最近重新开始深入学习DX,对这个问题摸索到了更合理的解决办法,在此重新记录一下。
本文为大便一箩筐的原创内容,转载请注明出处,谢谢:http://www.cnblogs.com/dbylk/p/3696949.html
2014年4月的解决方案:
这个问题出现的原因是将.fx文件(着色器文件)导入自己新建的工程以后,VS2013会默认使用HLSL编译器对其进行编译,而.fx文件中并未定义main函数,所以会导致编译出错。
解决方法是:
右键.fx文件,“属性->配置属性->常规->项类型”,将“HLSL编译器”改为“不参与生成”
2015年9月的解决方案:
按照正常的DirectX程序执行流程来说,着色器文件是在程序启动的时候才被编译与执行,但如此一来,当着色器程序出现语法错误时Debug便变成了一个噩梦。
因此,VS2013为大家提供了一个人性化的功能,那便是在程序编译时加入了对着色器代码的语法检查。去年写这篇博文时提供的解决方法便是让编译器跳过了对着色器的语法检查,从而让程序能够正常运行。
本人博客地址,防止无脑抄袭,影响阅读见谅:http://www.cnblogs.com/dbylk
那么问题来了:
为什么在着色器代码在能够正常执行的情况下编译器还会对着色器文件报“entrypoint not found”的错误呢?
这个问题的答案如下:
不同于C/C++程序,着色器程序的入口函数名是可以由用户自己定义的,而VS2013将着色器程序的默认入口函数名与C/C++一样设为了“main”,而DirectX Tutorial中的着色器代码并不不是以“main”作为程序入口点,所以才会报出上述的错误。
新的解决方法如下:
1. 右键.fx文件,“属性->配置属性->常规->项类型”,将它的值改为“HLSL编译器”
2. 点击右下角的“应用”按钮,会发现左边的“配置属性”菜单中多了一个“HLSL编译器”的菜单,点开后选择“常规”
3. “入口点名称”改为着色器文件中对应的函数名
4. “着色器类型”改为对应的着色器类型(一般为顶点 or 像素着色器)
5. “着色器模型”改为对应的着色器版本
使用这个方法就可以在解决问题的同时使用VS2013对着色器代码进行语法检查了,OVER!
【VS2013编译DirectX Tutorials时遇到的错误】FXC : error X3501: 'main': entrypoint not found的更多相关文章
- 【VS2013编译DirectX Tutorials时遇到的错误】"const wchar_t *" 类型的实参与 "LPCSTR" 类型的形参不兼容
本文为大便一箩筐的原创内容,转载请注明出处,谢谢:http://www.cnblogs.com/dbylk/p/3696367.html 通过查看LPCSTR的定义: typedef _Null_te ...
- 【VS2013生成DirectX Tutorials时遇到的错误】无法解析的外部符号 _D3D10CreateDeviceAndSwapChain@32
本文为大便一箩筐的原创内容,转载请注明出处,谢谢:http://www.cnblogs.com/dbylk/p/3696472.html 今天尝试编译DirectX10中的一个Turorials时, ...
- Linux:编译动态库时遇到的错误relocation R_X86_64_32 against `a local symbol'
编译动态库时遇到如下错误: ... ... relocation R_X86_64_32 against `a local symbol' can not be used when making a ...
- VS2008项目使用VS2015打开时,出现错误: error CS1012: Too many characters in character literal
VS2008项目使用VS2015打开时,出现错误: error CS1012: Too many characters in character literal ------------------- ...
- 启动webpack-dev-server错误,ERROR in main.js from UglifyJs Unexpected token: name «element», expected: punc «;»
启动webpack-dev-server出现以下错误 ERROR in main.js from UglifyJsUnexpected token: name «element», expected: ...
- 解决 Maven项目进行编译( mvn compile )时出现的错误
错误信息: 在 pom.xml 文件 设置一下Maven的属性 <!--Maven 属性--> <properties> <!--项目的编码格式--> <pr ...
- 编译Cython代码时遇到的问题: fatal error LNK1112: module machine type 'x64' conflicts with target machine type 'X86'
使用python setup.py build_ext --inplace命令编译cython代码, 出现以下错误: Compiling cython_example.pyx because it c ...
- 编译php5.4的时候出现错误----configure: error: in `/usr/local/src/php540/php-5.4.0':
错误如下:checking for grep that handles long lines and -e... /bin/grep checking for egrep... /bin/grep - ...
- 编译android程序时DEX过程出现错误
今天编译高级设置时出现了错误,这好坑爹啊~ 于是我开始检查代码,发现代码没有错误啊,然后观察MAKE的步骤才发现是DEX时出现了问题!! 下面是错误的LOG: Information:Using ja ...
随机推荐
- MYSQL中case when then else end 用法
条件语句 delimiter \\CREATE PROCEDURE proc_if ()BEGIN declare i int default 0; if i = 1 THEN ...
- pandas(一)操作Series和DataFrame的基本功能
reindex:重新索引 pandas对象有一个重要的方法reindex,作用:创建一个适应新索引的新对象 以Series为例 >>> series_obj = Series([4. ...
- 剑指offer 面试6题
面试6题: 题目:从尾到头打印链表 输入一个链表,从尾到头打印链表每个节点的值. 解题代码: # -*- coding:utf-8 -*- # class ListNode: # def __init ...
- start() vs. run()
I'm reading a Blog. But a rather familiar question occurred to me, "What's the difference ...
- pyhton3 hashlib模块
hashlib模块提供一下常量属性 hashlib.algorithms_guaranteed 获取保证在所有平台上此模块支持的哈希算法名称的集合 hashlib.algorithms_availab ...
- 前端 初级篇(HTML)
HTML 概述: HTML是英文Hyper Text Mark-up Language(超文本标记语言)的缩写,他是一种制作万维网页面标准语言(标记).相当于定义统一的一套规则,大家都来遵守他,这样就 ...
- php异常处理类
<?php header('content-type:text/html;charset=UTF-8'); // 创建email异常处理类 class emailException extend ...
- iOS 11 Xcode9开发 新特性学习 (新方法篇)
1 . 引入github (1) 在Xcode 9 中,引入了 gitHub,新源代码管理导航器 可以展示branch分支和 tag标签. (2)点进去,就可以看指定一次commit了哪些东西 2 ...
- classpath是什么
作用: 告诉Java执行环境,在哪些目录下可以找到您所要执行的Java程序所需要的类或者包(也就是.class文件) JDK 5.0默认就会到JDK的lib目录下寻找Java程序. 如何配置? 有许多 ...
- VMware 连接不上XSHELL
本人创建虚拟机时把网络连接模式选成了桥接,后来在VMware虚拟网络编辑器中查看了连接模式:NAT. 重新回到VMware中更改了连接模式:NAT模式 成功连接XSHELL 步骤1 打开VMware的 ...