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" />

最终运行效果:  :)

最新文章

  1. Ionic2学习笔记(10):扫描二维码
  2. [luogu2964][USACO09NOV][硬币的游戏A Coin Game] (博弈+动态规划)
  3. Request 、Response 与Server的使用
  4. ArcGis for Android 工作与学习
  5. Linux文件操作 笔记
  6. 在字符串S1中删除字符串S2中所包含的字符
  7. velocity模板技术生成word文档
  8. 3.Repeater 绑定数据例子
  9. html5 中常用的标签和属性
  10. C#中两个时间的比较
  11. Flask学习记录之MarkDown编辑文本
  12. utf8格式源代码中的字符串,默认都会当作char来处理,除非用L&quot;&quot;符号来修饰
  13. 南京三星面试准备3--数组&amp;基础数据结构
  14. io的四个分类
  15. deeplearning.ai 作业中的Python常用命令
  16. 使用getline输入一行字符串
  17. 关于code::blocks的编译速度问题
  18. Maven setting配置镜像仓库
  19. EXCEL 偶数、奇数行分开求和公式
  20. nginx 访问频率控制

热门文章

  1. 123457123456#0#-----com.threeapp.ErTongPaint01-----儿童宝宝绘画涂鸦游戏02
  2. 一秒 解决 ERROR 1044 (42000): Access denied for user &#39;&#39;@&#39;localhost&#39; to database &#39;mysql 问题
  3. thymeleaf自定义属性
  4. LeetCode_27. Remove Element
  5. 使用PHP实现命令模式(转)
  6. Java遍历日期代码
  7. 【Leetcode_easy】748. Shortest Completing Word
  8. springboot-mybatis-pagehelper(分页插件)
  9. @ResponseBody使用
  10. 微信公众号对接JS-SDK接口 调用微信内置地图