zoukankan      html  css  js  c++  java
  • 编译 SharpNav 遇到的问题和解决过程

    https://github.com/Robmaister/SharpNav 是github上基于recastnavtigation的一个C#项目.

    github上并没有详细的编译过程.

    首先把项目clone下来.解压到某目录eg: E:MyCodeSharpNav-master

    用VS 2015打开(其他低版本打开会有报错,Github ReadMe提到该项目是在VS2015下编写的) E:MyCodeSharpNav-masterSourceSharpNav.sln 工程文件.

    最初直接勾选了Tools/Options对话框内两个选项,如下图,然后Build.

    Build一切顺利,如果这样简单就可以了也就没有本文了...

    打开生成的E:MyCodeSharpNav-masterBinariesExamplesDebugExamples.exe 发现直接停止运行了......

    于是尝试在VS里Debug方式运行,定位到崩溃的位置

    在Debug之后,代码定位到E:MyCodeSharpNav-master1SourceSharpNav.ExamplesExampleWindow.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:MyCodeSharpNav-masterBinariesExamplesDebugExamples.exe,这次终于成功了~~~

    ps在SharpNav项目下有一个packages.config配置文件,里面有OpenTK的版本,这也是在Update后,点确定时VS自动修改的文件.

    <package id="OpenTK" version="1.1.2225.0" targetFramework="net451" />

    最终运行效果:  :)

  • 相关阅读:
    Java实现 蓝桥杯VIP 算法训练 王后传说
    Java实现 蓝桥杯VIP 算法训练 王后传说
    Java实现 蓝桥杯VIP 算法训练 特殊的数字四十
    win7桌面图标小盾牌怎么去掉(2种方法)
    使用GO语言灵活批量ssh登录服务器执行操作
    2016 Web 开发资源工具大搜罗
    sqlite的源代码加密,以及其它一些文章
    SQLite 对中文路径的支持(用到了StringToWideChar和Utf8Encode在D7的System单元中自带)
    AMD规范与CMD规范的区别
    值类型和引用类型、可空类型、堆和栈、装箱和拆箱
  • 原文地址:https://www.cnblogs.com/wmalloc/p/5630875.html
Copyright © 2011-2022 走看看