首页 > 系统相关 >OSG开发笔记(三十六):osg3.4.0基于windows平台msvc2017x64编译器编译并移植Demo

OSG开发笔记(三十六):osg3.4.0基于windows平台msvc2017x64编译器编译并移植Demo

时间:2024-12-02 17:22:21浏览次数:6  
标签:msvc2017x64 install windows 32 x64 编译 编译器 版本 步骤

前言

  本篇编译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库,弄完好,再测是没问题了。

标签:msvc2017x64,install,windows,32,x64,编译,编译器,版本,步骤
From: https://www.cnblogs.com/qq21497936/p/18582272

相关文章

  • Windows更改远程桌面端口
    为了远程安全,默认在3389改为别的端口。本示例为3389改为533891、步骤:打开“开始→运行”,输入“regedit”,打开注册表,进入以下路径:[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TerminalServer\Wds\rdpwd\Tds\tcp]修改PortNamber修改成所希望的端口即可,例如53389(......
  • 记一次Windows 系统更新导致双系统无法启动的修复过程
    记一次Windows系统更新导致双系统引导错误,无法启动的修复过程背景这台电脑是其他办公室淘汰下来,给到了我们办公室——这不是重点。给我们的时候,他们的描述是“配置实在是太低了,你们看看能不能用”。我们看了一下,AMDPROA8870R7,8G内存,256GSSD,加装了1THDD,用CPU-Z跑了......
  • windows10家庭版如何永不息屏且永不锁屏
    目录永不息屏永不锁屏一、准备环节1、准备bat文件2、以管理员身份运行二、启用不锁屏参考链接永不息屏设置——系统——电源和电池——屏幕和睡眠时间:均调为“永不”永不锁屏一、准备环节windows+R快捷键后,在左下角运行窗口输入gpedit.msc,点击确定。但是,windows家庭版往往会......
  • windows电脑卸载mysql
    -1、怎么判断电脑上已经安装了mysql(以下是各种不同的判断方法)a、检查程序和功能设置(我明明安装了mysql,但是在这里并没有找到mysql相关的条目,猜测我并没有安装mysql客户端,所以在这里没找到)打开控制面板(win+R--->输入control)进入程序--->程序和功能在列表中......
  • exe 安装为 windows服务
    下载地址http://www.nssm.cc/download只有一个exe文件放在  C:\Windows\nssm.exe命令行执行nssminstall ......
  • 计算机配置 → 管理模板 → Windows 组件- 数据收集和预览版本- 允许诊断数据 ---已
    计算机配置→管理模板→Windows组件-数据收集和预览版本-允许诊断数据---已启用诊断数据关闭禁用"允许发送Windows诊断数据中的设备名称"在隐私方面的影响主要体现在以下几个方面。设备名称是Windows诊断数据的一部分,它通常包含硬件的详细信息,如计算机名称、型......
  • 在 Windows Server 2025 安装过程中,确实有部分用户反馈提到,系统要求上传隐私数据(如匿
     在WindowsServer2025安装过程中,确实有部分用户反馈提到,系统要求上传隐私数据(如匿名硬件信息、诊断数据等)。虽然这些数据的上传本身是为了提升用户体验和系统兼容性,但如果你希望禁用或避免这些设置,可以通过修改注册表来实现。以下是通过注册表禁用隐私数据上传的步骤:1......
  • 在Windows 10和Windows 11上,你可以通过设置Windows防火墙来限制外网访问,同时保持局域
    在Windows10和Windows11上,你可以通过设置Windows防火墙来限制外网访问,同时保持局域网的访问不受影响。以下是具体操作步骤:方法1:使用Windows防火墙设置限制打开防火墙设置:按 Win+R 打开运行对话框,输入 wf.msc 并按回车,打开“Windows防火墙高级安全”窗口。创建......
  • Windows系统使用安装ActiveMQ消息队列手把手保姆级教程踩坑实录
    文章目录一、什么是ActiveMQ1.概述2.架构3.应用场景二、下载ActiveMQ三、解压四、配置环境变量五、启动ActiveMQ六、验证安装和服务七、停止ActiveMQ八、注意事项一、什么是ActiveMQ1.概述ActiveMQ是Apache软件基金下的一个开源软件,它遵循JMS1.1规范(JavaMessage......
  • UPLOAD LABS | PASS 08 - 黑名单绕过(Windows . 绕过)
    关注这个靶场的其它相关笔记:UPLOADLABS——靶场笔记合集-CSDN博客0x01:过关流程本关的目标是上传一个WebShell到目标服务器上,并成功访问:通过查看源码,发现本关在第七关的基础上增加了”首尾去空“的逻辑,防御了我们的空格绕过:但是,如果你细心对比Pass08与Pass0......