前言

  本篇编译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. webpack系列-externals配置使用(CDN方式引入JS)

    如果需要引用一个库,但是又不想让webpack打包(减少打包的时间),并且又不影响我们在程序中以CMD.AMD或者window/global全局等方式进行使用(一般都以import方式引用使用),那就 ...

  2. C++17新特性探索:拥抱std::optional,让代码更优雅、更安全

    std::optional 背景 在编程时,我们经常会遇到可能会返回/传递/使用一个确定类型对象的场景.也就是说,这个对象可能有一个确定类型的值也可能没有任何值.因此,我们需要一种方法来模拟类似指针的 ...

  3. CPP在内网穿透技术的思考

    概述 内网穿透是一种技术,用于在私有局域网(LAN)中的设备与外部网络(如互联网)之间建立通信通道,使得外部设备可以访问内网中的服务.由于内网设备通常位于防火墙或 NAT(网络地址转换)设备之后,外部 ...

  4. TypeScript – Decorator 装饰器

    前言 TypeScript 5.0 之后就可以使用正真的 JS Decorator 了, 从前 experiment 的版本依然可用, 但是不建议继续用, 因为差很远, 一起用会混乱. Decorat ...

  5. NOIP2023 游记 初见曙光

    NOIP2023 游记 Day 0 明天就考 NOIP 了,今天还是得扎实的复习一下. 安排一下我的复习计划: 上午&&下午 复习线段树 复习权值线段树 学习带权并查集 复习 lca ...

  6. 解密prompt系列39. RAG之借助LLM优化精排环节

    RAG的部分我们之前讨论过信息召回的多样性,信息密度和质量,主要集中在召回,融合,粗排的部分.这一章我们集中看下精排的部分.粗排和精排的主要差异其实在于效率和效果的balance.粗排模型复杂度更低, ...

  7. SQL数据库书的配套资源

    <SQL基础教程(视频教学版)>代码.课件.教学视频 https://pan.baidu.com/s/1QA5m5HN159wi3FX_KNDQzA 提取码: 4m9e <SQL S ...

  8. LeetCode 730. Count Different Palindromic Subsequences (区间DP)

    题意 给一个字符串S,求它所有子序列中不同非空回文串的数量.字符串由 'a' 'b' 'c' 'd' 四个字母组成. 由于题目要求的是不同回文串. abba 的回文串子序列为 a,b,aba,abba ...

  9. iOS关于七牛云项目分发遇到的问题小结

    在新公司做iOS开发,目前主要是用企业开发证书通过七牛云分发的形式实现app下载.在工作过程中遇到了几个相关的问题,在这里整理一下. 1.分发的ipa包在七牛云无法正常分发安装的问题 解决方案:在七牛 ...

  10. vue3 + vite 分析报告 report == rollup-plugin-visualizer

    安装插件 npm i rollup-plugin-visualizer -D 配置vite.config.js 文件 [加入插件] import { defineConfig } from 'vite ...