编译 SharpNav 遇到的问题和解决过程
https://github.com/Robmaister/SharpNav 是github上基于recastnavtigation的一个C#项目.
github上并没有详细的编译过程.
首先把项目clone下来.解压到某目录eg: E:\MyCode\SharpNav-master
用VS 2015打开(其他低版本打开会有报错,Github ReadMe提到该项目是在VS2015下编写的) E:\MyCode\SharpNav-master\Source\SharpNav.sln 工程文件.
最初直接勾选了Tools/Options对话框内两个选项,如下图,然后Build.
Build一切顺利,如果这样简单就可以了也就没有本文了...
打开生成的E:\MyCode\SharpNav-master\Binaries\Examples\Debug\Examples.exe 发现直接停止运行了......
于是尝试在VS里Debug方式运行,定位到崩溃的位置
在Debug之后,代码定位到E:\MyCode\SharpNav-master1\Source\SharpNav.Examples\ExampleWindow.cs文件里OnUpdateFrame函数下面这行代码报错:
KeyboardState k = OpenTK.Input.Keyboard.GetState();
An unhandled exception of type 'System.TypeInitializationException' occurred in OpenTK.dll
OpenTK.Input.Keyboard”的类型初始值设定项引发异常。
查了很多资料,大概是某OpenTK.dll中变量没有初始化成功,于是尝试下载最新的OpenTK源码,然后用源码替代OpenTK.dll进行编译,这样能定位到具体出错的位置以及可以修改出错的代码.
但是尝试了很久把新版的OpenTK直接Refrence进工程又出现了其他各种错误(怀疑新加入的OpenTK和原工程引用的OpenTK.dll有版本不同,而且原来的引用没有清楚干净,对各种工程设置弄的毫无头绪)
于是希望找到原来SharpNav引用的是哪个版本的OpenTK,然后去找相同版本的OpenTK源码,以排除版本冲突的问题.
后来发现在SharpNav项目右键有一个Manager NuGet Packages,点开之后,搜索OpenTK,在右侧可以看到,当前项目Installed的版本是1.1.2225,但是发现下面可以直接升级到1.1.2349版本,于是怀着试试看的心态,直接在这里Update了OpenTK的版本
Update后弹窗需要更新一些配置文件,当然选确定了(后面怀疑正式这些配置文件在手动更新的时候没有修改,导致版本冲突,引发了其他问题)
在更新之后,直接Build SharpNav.Example 一切顺利,执行E:\MyCode\SharpNav-master\Binaries\Examples\Debug\Examples.exe,这次终于成功了~~~
ps在SharpNav项目下有一个packages.config配置文件,里面有OpenTK的版本,这也是在Update后,点确定时VS自动修改的文件.
<package id="OpenTK" version="1.1.2225.0" targetFramework="net451" />
最终运行效果: :)
最新文章
- Ionic2学习笔记(10):扫描二维码
- [luogu2964][USACO09NOV][硬币的游戏A Coin Game] (博弈+动态规划)
- Request 、Response 与Server的使用
- ArcGis for Android 工作与学习
- Linux文件操作 笔记
- 在字符串S1中删除字符串S2中所包含的字符
- velocity模板技术生成word文档
- 3.Repeater 绑定数据例子
- html5 中常用的标签和属性
- C#中两个时间的比较
- Flask学习记录之MarkDown编辑文本
- utf8格式源代码中的字符串,默认都会当作char来处理,除非用L";";符号来修饰
- 南京三星面试准备3--数组&;基础数据结构
- io的四个分类
- deeplearning.ai 作业中的Python常用命令
- 使用getline输入一行字符串
- 关于code::blocks的编译速度问题
- Maven setting配置镜像仓库
- EXCEL 偶数、奇数行分开求和公式
- nginx 访问频率控制
热门文章
- 123457123456#0#-----com.threeapp.ErTongPaint01-----儿童宝宝绘画涂鸦游戏02
- 一秒 解决 ERROR 1044 (42000): Access denied for user &#39;&#39;@&#39;localhost&#39; to database &#39;mysql 问题
- thymeleaf自定义属性
- LeetCode_27. Remove Element
- 使用PHP实现命令模式(转)
- Java遍历日期代码
- 【Leetcode_easy】748. Shortest Completing Word
- springboot-mybatis-pagehelper(分页插件)
- @ResponseBody使用
- 微信公众号对接JS-SDK接口 调用微信内置地图