前言

  本篇编译osg3.4.0的msvc2017x64版本,之前使用的都是mingw32版本。

 

OSG编译

步骤一:下载解压

  下载3.4.0版本。
  

步骤二:使用cmake配置

  

  

  

  因为是64位,可以通过后续配置cmake用x64,也可以直接选择构架:
  

  继续:
  

  要修改下安装的路径,方便提取库:
  

  默认是32位,发现后续vs更改不行,得在cmake处更改,查看“入坑一”,修改如下图:
  

  修改后需要重新configure。

步骤三:生成工程

  

  

步骤四:打开vs2017打开工程

  

  装了多个vs,可能会打开错误,如果打开不是使用vs2017就自行使用
  

步骤五:VS2017编译

  编译debug版本,先创建x64版本
  

  卡住了,等一会儿:
  

  然后编译:
  

  

  编译release版本:
  

  

  

步骤六:安装到目标位置

  安装debug版本:
  

  

  安装release版本:
  

  

  检查install的文件:
  

 

OSG原Demo迁移

  移植Demo过来,复现过去的两个bug,一个是从相机旋转中心,一个是球体透明截面
  测试都使用纯C++原始代码修改,非自建的引擎,也不是osgQt。
  

 

入坑

入坑一:模块计算机类型“x86”与目标计算机类型“x64”冲突

问题

  这是个常规问题了,关键在于已经设置了x64怎么出来还是x86_32,好几年没弄,又卡了一下。
  

原因

  这是平台解决方案是x64,但是默认没有x64,还得新增配置,又由于新增解决方案卡住了,笔者就只新增活动方案,下面没点了,正确要勾选如下图:
  

  经过测试还是不行,再往前退,在CMake配置得时候指定x64:
  

解决

  在CMake配置得时候指定x64:
  

  然后重新再来一遍即可。

入坑二:编译运行直接异常

问题

  运行直接崩,一般是dll依赖缺少,检查了不缺。
  

尝试

  使用纯Qt程序,排除掉osg的,使用纯Qt程序,也是崩溃,本身Qt装的可能有问题,继续研究
  

  新建了个新的是可以:
  

  怀疑是osg得shadow文件夹内部有问题,删掉shadow,再运行裸的只有界面的程序(去掉了osg的其他依赖):
  可以运行:
  

  然后拷贝添加osg发现崩了,发现没有拷贝dll过去,检查脚本:
  

  有问题,以为是没复制过去覆盖32位的,复制过去也崩了,单独运行,还是0x7B错误,这是库连接错误,不理解了,后来经过dll对比,发现时间与32位一致,那么问题的原因就是晚上有点事,第二天上午才看,以为编了覆盖了64位的,实际没编译,install还是32位的,所以编译写程序还是连续时间比较好,第二天:
  

  重新编译并且install发现,时间还是没变,只好删除了build文件夹重新弄了,以为是粗心,结果不是,那么点击重新编译:
  检查了是生成了:
  

  但是install拷贝过去就是之前的时间:
  

  搞蒙了都(理论上一个build也可以更改参数然后install到不同文件夹,但是这里不管了)。

解决

  build全删掉,一刀切,从头新建build重新来一遍,确保生成了64位的并提取出来。
  

  这里还少了release库,弄完好,再测是没问题了。

OSG开发笔记(三十六):osg3.4.0基于windows平台msvc2017x64编译器编译并移植Demo的更多相关文章

  1. Java开发学习(三十六)----SpringBoot三种配置文件解析

    一. 配置文件格式 我们现在启动服务器默认的端口号是 8080,访问路径可以书写为 http://localhost:8080/books/1 在线上环境我们还是希望将端口号改为 80,这样在访问的时 ...

  2. MySQL数据库开发的三十六条军规

    一.核心军规 尽量不在数据库做运算,cpu计算的事务必移至业务层; 控制表.行.列数量([控制单张表的数据量 1年/500W条,超出可做分表],[单库表数据量不超过300张] .[单张表的字段个数不超 ...

  3. .net开发笔记(十六) 对前部分文章的一些补充和总结

    补充有两个: 一个是系列(五)中讲到的事件编程(网址链接),该文提及到了事件编程的几种方式以及容易引起的一些异常,本文补充“多线程事件编程”这一块. 第二个是前三篇博客中提及到的“泵”结构在编程中的应 ...

  4. 网站开发进阶(三十六)String.getBytes()方法中的中文编码问题

    String.getBytes()方法中的中文编码问题 String的getBytes()方法是得到一个系统默认的编码格式的字节数组. getBytes("utf-8")得到一个U ...

  5. Java开发笔记(十六)非此即彼的条件分支

    前面花了大量篇幅介绍布尔类型及相应的关系运算和逻辑运算,那可不仅仅是为了求真值或假值,更是为了通过布尔值控制流程的走向.在现实生活中,常常需要在岔路口抉择走去何方,往南还是往北,向东还是向西?在Jav ...

  6. 论文阅读笔记三十六:Mask R-CNN(CVPR2017)

    论文源址:https://arxiv.org/pdf/1703.06870.pdf 开源代码:https://github.com/matterport/Mask_RCNN 摘要 Mask R-CNN ...

  7. Android UI开发第三十六篇——使用Volley加载图片列表

    Android开发者可能会使用Universal Image Loader或者Square`s newer Picasso这些第三方的库去处理图片的加载,那么Volley是怎么加载图片列表的呢,这一篇 ...

  8. 【Unity 3D】学习笔记三十六:物理引擎——刚体

    物理引擎就是游戏中模拟真是的物理效果.如两个物体发生碰撞,物体自由落体等.在unity中使用的是NVIDIA的physX,它渲染的游戏画面很逼真. 刚体 刚体是一个很很中要的组件. 默认情况下,新创的 ...

  9. BizTalk开发系列(三十六) Orchestration单实例执行

    BizTalk 是高效的消息处理引擎,采用多线程并发的方式来处理消息.也就是说当有消息被接收的时候就会产生一个新的消息处理实例.但有时目标系统可能并没有并发处理 的能力, 这时就需要在BizTalk中 ...

  10. PHP学习笔记三十六【try 二】

    <?php //定义一个顶级异常处理器 要定义在最上面 function my_exception($e) { echo "我是顶级异常处理:".$e->getMess ...

随机推荐

  1. 常回家看看之house_of_cat

    house_of_cat 前言: house of cat 这个利用手法和前面提到的 house of kiwi ,和 house of emma 利用的手法是一个链子,当程序无法通过main函数返回 ...

  2. Java 之跨docker容器备份数据库

    Java 之跨docker容器备份数据库 摘] java中执行数据库备份,每隔10分钟备份一次,保留四份备份文件,项目在windows系统下运行备份命令没问题.项目采用docker部署后,jar部署在 ...

  3. Spring —— AOP总结

    AOP 总结                    

  4. 学好QT框架之后可以做什么工作?QT技术框架现代化行业大型复杂应用的经典成功案例

    简介 本文粗略的介绍了QT框架的软件开发技术生态体系的全球影响力:QT框架在文字办公领域.CAD三维图形领域.Linux操作系统领域.物联网领域.汽车电子领域以及数字医疗领域等现代化行业的大型复杂应用 ...

  5. 系统编程-操作系统概论PART2

    <1> 操作系统提供的服务   <2> 现代操作系统的特征 2.1 微内核(英文中常译作µ-kernel或者micro kernel) 这是一种能够提供必要服务的操作系统内核: ...

  6. 【赵渝强老师】Redis的RDB持久化

    Redis 提供了多种不同级别的持久化方式: RDB 持久化可以在指定的时间间隔内生成数据集的时间点快照(point-in-time snapshot). AOF (Append-only file) ...

  7. 【USB3.0协议学习】Topic2·USB3.0的LTSSM分析

    一.什么是LTSSM,处于USB层次中的哪个位置? LTSSM是链路训练状态机的简称,位于USB3.0协议的link layer,共有12种状态,在链路的两端,也就是Downstream port和U ...

  8. Uefi ABL读取XBL设置的标志位

    PBL(启动固化程序)-> XBL(扩展引导加载程序,负责初始化芯片驱动和核心应用功能.XBL通常会加载一些平台相关的驱动程序,并提供通用接口)-> ABL(应用引导加载程序,负责引导操作 ...

  9. python:批量删除指定文件目录中多个文件

    #coding:utf-8# 任务需要,需要删除多余的文件,手动删除太麻烦,几行python搞定 import os from glob import glob path = r"/medi ...

  10. Oracle ADG 自动切换脚本分享

    为大家分享一个[Oracle ADG自动切换]的脚本,由云和恩墨工程师HongyeDBA编写,支持Switchover.Failover. 下载链接:https://www.modb.pro/down ...