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

最终运行效果:  :)

时间: 2024-08-04 00:05:01

编译 SharpNav 遇到的问题和解决过程的相关文章

应用部署weblogic 报错Unsupported major.minor version 51.0的解决过程

应用部署weblogic 报错Unsupported major.minor version 51.0的解决过程 ? ? 1.部署提示错误:Unsupported major.minor version 51.0 1.1 错误现象如下图所示: 1.2 原因分析 类似错误均属于Java版本问题,即JDK版本过低,只要选择相对应的JDK版本编译即可.48,49,50.51.52是Java编译器内部的版本号:Unsupported major.minor version 52.0 对应于 JDK1.8

无法SSH服务器的解决过程(openssh-daemon is stopped)

公司某台服务器不知为何无法ssh连接上,进入现场查看: 1.执行netstat -atnlp|grep ssh,没有找到ssh端口 2.执行ps aux|grep ssh,没找到相关进程 3.执行service sshd start,显示绿色的OK,但用ps和netstat看不到ssh任何信息,echo $?结果为0 4.执行service sshd status,显示:openssh-daemon is stopped 4.执行service sshd stop,无报错信息,echo $?结果

STM32 .ld链接文件分析及一次bug解决过程

目录 STM32 .ld链接文件分析及一次bug解决过程 问题描述 解决办法 ld文件解析 后续 STM32 .ld链接文件分析及一次bug解决过程 问题描述 原子板的代码中含有一个关于使用外部SRAM的功能,由于本人的开发板的SRAM只有512K,因此稍微修改了一下代码,同时使用GCC进行编译,但是这里却报错了,源码如下: //内存池(4字节对齐) __align(4) u8 mem1base[MEM1_MAX_SIZE]; __align(4) u8 mem2base[MEM2_MAX_SI

linux中企业网站中病毒的解决过程

1.1 处理过程 和运维人员确认确实出问题了,并详细确认问题情况. 指定处理方案,先备份已有数据,然后执行命令批量修改回来. 写解决说明,写完发给他们的运维. 询问处理结果,并告知详细查看日志,寻找问题发生来源. 提供亡羊补牢解决方案 1.2 从发现到解决过程 运营人员.网站客户发现问题,网站有弹窗广告. 运营人员报给开发人员,开发联系运维人员,开发和运维共同解决. 开发发现的问题原因就是所有站点目录被嵌入一段JS代码. 详细查看日志,寻找问题发生来源. 提供亡羊补牢解决方案

STM8S编译时内存溢出错误的解决办法

? 导致COSMIC报告"segment .ubsct overflow"错误的根本原因是内存溢出, 相关原因分析如下: ? 1.变量存储空间结构 ? STM8S105系列CPU的RAM地址范围为0~0x7FF的2K空间,其中默认将高512字节分配给堆栈,剩下0~0x5FF字节为变量存储空间 .在0~0x5FF的空间范围内,低256字节被定义为Zero page,其中包括.bsct,.ubsct,.bit,.share ? 可见, 当segment .ubsct overflow错误出

VS编译duilib项目时候的错误解决方法整理

@1:找不到Riched20.lib 用everything等软件搜索下磁盘,找到所在的目录添加到vs的库目录即可,我得是C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Lib:其他的vs版本可能不一样,自行搜索 @2: "IDispatchEx": 重定义:不同的基类型 点击打开链接 UIFlash.h行: #import "..\Utils/Flash11.tlb" raw_interfaces_only,

一个图文混排问题的解决过程

需求如所示:左边的是效果图,右边的是完成后的图                 具体需求描述:用户的回复一条就是一个cell,字数不定.当存在某种条件时,需要在文字(可能换行)的最后一个字后面添加一个能点击的删除按钮小图标,文字支持emoji表情符号. 解决过程: 1.一看到这种文字中需要穿插图片的就想到了富文本中的NSTextAttachment对象,它可以包装一个image后生成一个富文本,再给UILabel显示就能完成显示需求,但是,该对象只能包装UIImage对象,无法监听图片的点击事件

MySQL数据库ab主从复制出错及解决过程

MySQL数据库ab主从复制出错及解决过程 一.mysql主从服务器报错描述:Slave_IO_Running=NO,Slave_SQL_Running=YES,Last_Errno=0 mysql slave stop ; mysql slave start; mysql show slave status ; 如果Slave_IO_Running=YES ...解决过程 :1 如果:Slave_IO_Running=NO,Slave_SQL_Running=YES,Last_Errno=0m

系统无法识别移动硬盘的解决过程

1. 如果是从未使用过USB外接设备的,需要查看CMOS参数 对于从来没有使用过USB外接设备的朋友来说,即使正确安装了驱动程序也有可能出现系统无法检测USB硬盘的情况,这主要是由于主板默认的CMOS端口是关闭的,如果没有将其设置为开启状态,那么Windows自然无法检测到移动硬盘了.为了解决这个问题,我们可以重新开机,进入CMOS设置窗口,并且在“PNP/PCI CONFIGURATION”栏目中将“Assign IRQ For USB”一项设置为“Enable”,这样系统就可以给USB端口分