编译 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" />
最终运行效果: :)

编译 SharpNav 遇到的问题和解决过程的更多相关文章
- 记VS2013并行编译导致出错的解决过程
接前一篇,电脑换了新的,系统是64bit的win8系统,先安装了SQLServer2012,再安装VS2010旗舰版,Stop!为什么还是2010?因为2010太经典了,以至于公司的项目还在用它写项目 ...
- 再记一次w3wp占用CPU过高的解决过程(Dictionary和线程安全)
在此之前项目有发生过两次类似的状况,都得以解决,但最近又会发现偶尔CPU会跑满,虽然之前使用过WinDbg解决过两次问题但人的记忆是不可靠的,今天处理同样问题的时候还是遇到了一些障碍,这一次希望可以记 ...
- 无法SSH服务器的解决过程(openssh-daemon is stopped)
公司某台服务器不知为何无法ssh连接上,进入现场查看: 1.执行netstat -atnlp|grep ssh,没有找到ssh端口 2.执行ps aux|grep ssh,没找到相关进程 3.执行se ...
- eclim CSearch macro 问题的解决过程备忘录
问题: CSearch 宏时. RuntimeException: Could not find file with URI because it is a relative path, and no ...
- ORA-01461的解决过程~~
转自:http://blog.itpub.net/7607759/viewspace-521189 近日生产库中的一个过程报出了ora-1461的错误,虽然错误实际处理起来非常简单,但解决过程中与ya ...
- 全志tina v3.0系统编译时的时间错误的解决(全志SDK的维护BUG)
全志tina v3.0系统编译时的时间错误的解决(全志SDK的维护BUG) 2018/6/13 15:52 版本:V1.0 开发板:SC3817R SDK:tina v3.0 1.01原始编译全志r1 ...
- 服务器个人环境下pytorch0.4.1编译warp-ctc遇到的问题及解决方法
一.关于warp-ctc CTC可以生成一个损失函数,用于在序列数据上进行监督式学习,不需要对齐输入数据及标签,经常连接在一个RNN网络的末端,训练端到端的语音或文本识别系统.CTC论文 CTC网络的 ...
- .NET平台开源项目速览(7)关于NoSQL数据库LiteDB的分页查询解决过程
在文章:这些.NET开源项目你知道吗?让.NET开源来得更加猛烈些吧!(第二辑) 与 .NET平台开源项目速览(3)小巧轻量级NoSQL文件数据库LiteDB中,介绍了LiteDB的基本使用情况以及部 ...
- 启动Tomcat一闪而过——分析及解决过程
启动Tomcat一闪而过--分析及解决过程 嗯,昨天将有关JDK的知识稍微整理了一下,现在稍微整理一下有关Tomcat的! 1:Tomcat是什么? Tomcat是当今世界上使用最为广泛的.开源免费的 ...
随机推荐
- Android插件化(三):OpenAtlas的插件重建以及使用时安装
Android插件化(三):OpenAtlas的插件重建以及使用时安装 转 https://www.300168.com/yidong/show-2778.html 核心提示:在上一篇博客 An ...
- 【转载】 AutoML总结
原文地址: https://jinxin0924.github.io/2017/12/21/AutoML%E6%80%BB%E7%BB%93/ Posted by JxKing on December ...
- ISO/IEC 9899:2011 条款6.4.7——头文件名
6.4.7 头文件名 语法 1.header-name: < h-char-sequence > " q-char-sequence " h-c ...
- sql 获取本周周一和周日
版本1.0(获取周日存在问题,请勿使用,仅用于引以为戒) 存在问题,获取周日的时候,当当前时间正好是周日,会获取下一周的周日,而非本周周日. ,)),) ),, ,)),) 版本2.0 看到版本1.0 ...
- Git操作记录、腾讯工蜂
腾讯工蜂: http://git.code.tencent.com 登录-->>创建项目-->>获取仓库路径 https://git.code.tencent.com/dang ...
- 详解Nginx中HTTP的keepalive相关配置
http keepalive在http早期 ,每个http请求都要求打开一个tpc socket连接,并且使用一次之后就断开这个tcp连接.使用keep-alive可以改善这种状态,即在一次TCP连接 ...
- redis 启动配置文件加载报错 service redis does not support chkconfig
# chkconfig: # description:Redis is a persistent key-value database 网上资料 上面的注释的意思是,redis服务必须在运行级2,3, ...
- [转帖]PostgreSQL 昨天,今天和明天
PostgreSQL 昨天,今天和明天 http://www.postgres.cn/v2/news/viewone/1/52 原作者:何伟平(laser) 创作时间:2005-01-15 11:44 ...
- Python 实现把两个排好序的的列表合并成一个排序列表
列表是升序的 # -*- coding: utf-8 -*- # 合并两个排序的数组 def merge_list(a, b): if not a: return b if not b: return ...
- 学习Python类的心得
类的注意事项 1)命名规则 需要注意的是,在Python中,变量名类似__xxx__的,也就是以双下划线开头,并且以双下划线结尾的, 是特殊变量,特殊变量是可以直接访问的,不是private变量, ...