`

use VRPN on GearVR, or porting VRPN from win64/win32 to Android

阅读更多

 

1、 VRPN include .lib static library On Win64/Win32 plateform,if u need it running On Android,U need to convert to Linux Plateform as a .so dynamic library or .a static library

You may need to install the enviroment of MinGW (Minimalist GNU on Windows) 可在windows下编译linux程序的仿真linux编译环境,它提供了linux下的C、C++头文件、系统库和一些linux下的编译工具集合如gcc、g++和make工具 mingw-w64-install.zip or mingw-get-setup.exe (version 0.6.2, win32)

Installer step:
1. "MinGW Installation Manager"  Select the package you wish to manage,include  "Basic Setup" and "All Packages", GCC need 3 tools: MinGW base toolsg++ compilerMinGW Make. open the Installation menu and select the "Apply Changes" operation.
2. Ensure that MSYS knows where MinGW is located,  located to path "E:\Program Files\MinGW\mingw-win32\msys\1.0\etc\fstab", and ensure "fstab" contains one line:
     "E:/Program Files/MinGW/mingw-win32    /mingw".
3. Environment Settings
  • Right-click on your "My Computer" icon and select "Properties". Click on the "Advanced" tab, then on the "Environment Variables" button.
  • You should be presented with a dialog box with two text boxes. The top box shows your user settings. The PATH entry in this box is the one you want to modify. Note that the bottom text box allows you to change the system PATH variable. You should not alter the system path variable in any manner, or you will cause all sorts of problems for you and your computer!
  • Click on the PATH entry in the TOP box, then click on the "Edit" button
  • Scroll to the end of the string and at the end add “
    ;<installation-directory>\bin
  • press OK -> OK -> OK and you are done.

 

转换工具 mingw-utils-0.3.tar ,get "\bin\reimp.exe" copyTo "mingw\bin\",或者将 reimp.exe 拷贝到将要转换的 .lib 目录。

use rimp.exe convert .lib to .a
C:\Users\admin>E:
E:\>
E:\>cd Plugins\RTSPlugin\Source\ThirdParty\Vrpn\Lib\VS2015
E:\Plugins\RTSPlugin\Source\ThirdParty\Vrpn\Lib\VS2015>
E:\Plugins\RTSPlugin\Source\ThirdParty\Vrpn\Lib\VS2015> reimp quat.lib
E:\Plugins\RTSPlugin\Source\ThirdParty\Vrpn\Lib\VS2015> reimp gpsnmea.lib
E:\Plugins\RTSPlugin\Source\ThirdParty\Vrpn\Lib\VS2015> reimp vrpn.lib
E:\Plugins\RTSPlugin\Source\ThirdParty\Vrpn\Lib\VS2015> reimp vrpn_HID_device_watcher.lib
E:\Plugins\RTSPlugin\Source\ThirdParty\Vrpn\Lib\VS2015> reimp vrpn_server.lib
E:\Plugins\RTSPlugin\Source\ThirdParty\Vrpn\Lib\VS2015> reimp vrpn_timecode_generator.lib
E:\Plugins\RTSPlugin\Source\ThirdParty\Vrpn\Lib\VS2015> reimp vrpnserver.lib

reimp consle help ( if u genarated .obj file ,you can use "dlltool quat.obj -l quat.a" to genarated .a file ):
Usage: reimp [options] IMPLIB
  -s, --dump-symbols      dump symbols to stdout
  -d, --only-def          only create .def files
  -c, --keep-case         keep case in lib*.a file names
  --dlltool <name>        use <name> for dlltool
  --as <name>             use <name> for assembler

 

Readme for reimp

* Overview
`reimp' is a tool to convert Microsoft's new-style (short) import libraries to import libraries for win32 ports of GNU tools (mingw32,cygwin).
`reimp' reads an MS import library and writes all imports to the corresponding .DEF file(s) that it feeds to `dlltool' that creates the import library.

* Invocation
Usage: reimp [options] IMPLIB

Options:
-s, --dump-symbols dump symbols to stdout
-d, --only-def only create .def files
-c, --keep-case keep case in lib*.a file names
--dlltool use for dlltool
--as use for assembler

The `--dump-symbols' option makes `reimp' use a quick method for
finding imported symbols and sending the names of found symbols to
stdout. If the input library contain non-imported symbols they will be
listed as well. The output symbols will have all decoration preserved
(i.e '_' will prefix most symbols), so if you feed it to dlltool you
should strip leading underscores. For example
echo EXPORTS > imp.def
reimp imp.lib | sed 's/_//' >> imp.def
dlltool -k --def imp.def --output-lib libimp.a --dllname imp.dll
The `--only-def' option makes `reimp' stop after generating the .DEF
file(s).
By default `reimp' converts all output library names to lower-case. By
using the `keep-case' option `reimp' will use exactly the case of the
DLL imported from when creating an import library. KERNEL32.dll will
generate libKERNEL32.a and not libkernel32.a as it would be default.

* Notes on mixed libraries
If an input library contain regular objects (non-imports, i.e code and
data) `reimp' will write out those objects unless you specify one of
the `--only-def' and `--dump-symbols' options. You probably want to
include those objects as well in the generated library. `reimp'
doesn't do that automatically so you have to do it manually using `ar', like this
# this generates several .o or .obj files.
reimp imp.lib
# add them to library
ar rcs libimp.a *.obj

 

 

OR

 

use "lib2a" (LIB to A converter) Free Open Source program - GNU GPL Licence.

 

This tool automatically converts a .LIB file (MS Visual C linker library) into .A file (MinGW linker library).
It is useful to make a C/C++ program a reusable component.

I have written it because I did not have found a such tool over the Net.

 

The main program is LIB2A.bat that performs successive stages for converting .LIB file to .A file into in the "convert" folder.

 

How it works

The conversion process is accomplished in several steps:
1. Copy your .LIB file and .DLL file into the "convert" folder.
1. Edit and replace the files names in the four first lines at the LIB2A.bat.
1. Run LIB2A.bat.

You can find your .A linker library into the "convert" folder.

 

 2、UE4 Create a Blank C++ Project, Open the Item "Edit" > "Plugin" > "New Plugin", choose a template and then specify a name to create a new plugin.

Blank: 创建一个空白的 最少量代码的 Plugin, 合并或者建立一个非可视化的 Plugin。在 Plugin list 可以看到该插件。

Content Only: 创建一个只包含内容的 Plugin。

Blueprint library: 创建一个包含 BlueprintFunctionLibrary 的 Plugin。用于创建一个静态的蓝图节点。

Editor Toolbar Button: 创建一个可以在 LevelEditor 的工具栏 添加 button 的 Plugin,然后创建并实现该 button 的 "OnButtonClick" event.

Editor Standalone Window: 创建一个可在 LevelEditor 工具栏添加 button 的Plugin,点击 button 将唤醒一个空的 独立选项卡窗口。

Editor Mode: 创建一个编辑器模式的 Plugin,将包含一个工具包示例,指定显示在 “Modes” 标签的 UI。还将包含基本的 UI 说明 editor 交互 和 undo/redo 功能的使用。

Thridparty Library:创建一个包含第三方库的 Plugin,包含了一个howTo include、load、use 第三方库的示例。

 

 this is my RTS Plugin folder:
 
 Plugins\RTS\Source\ThirdParty\RTSLibrary

 

打包 Android / Linux 平台 UE4 Plugin link 第三方库:将转换成 .a /.so (此处为 vrpn.a)放入 “Plugins\RTS\Source\ThirdParty\RTSLibrary\Android” 目录;

打包 Mac 平台 UE4 Plugin link 第三方库 : 将转换成 .dylib (此处为 libExampleLibrary.dylib)放入 “Plugins\RTS\Source\ThirdParty\RTSLibrary\Mac\Release” 目录;

打包 Win64/Win32 平台 UE4 Plugin link 第三方库:将转换成 .lib/.dll(此处为 vrpn.lib)放入 “Plugins\RTS\Source\ThirdParty\RTSLibrary\x64” 目录;

 

 在 RTS plugin

 

未完待续....

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 大小: 10.2 KB
  • 大小: 31.5 KB
分享到:
评论

相关推荐

    基于ARM架构服务器部署docker-compose

    基于arm64版本的docker-compose文件

    附件3-4:台区智能融合终端全性能试验增值税发票开具确认单.docx

    台区终端电科院送检文档

    埃夫特机器人Ethernet IP 通讯配置步骤

    埃夫特机器人Ethernet IP 通讯配置步骤

    rv320e机器人重型关节行星摆线减速传动装置研发.rar

    rv320e机器人重型关节行星摆线减速传动装置研发

    气缸驱动爬杆机器人的设计().zip

    气缸驱动爬杆机器人的设计().zip

    软件工程中期答辩1234567

    56tgyhujikolp[

    基于OpenCV的数字身份验证系统:人脸检测、训练与识别的Python实现

    内容概要:本文档提供了基于OpenCV的数字身份验证系统的Python代码示例,涵盖人脸检测、训练和识别三个主要功能模块。首先,通过调用OpenCV的CascadeClassifier加载预训练模型,实现人脸检测并采集多张人脸图像用于后续训练。接着,利用LBPH(局部二值模式直方图)算法对面部特征进行训练,生成训练数据集。最后,在实际应用中,系统能够实时捕获视频流,对比已有的人脸数据库完成身份验证。此外,还介绍了必要的环境配置如依赖库安装、文件路径设置以及摄像头兼容性的处理。 适合人群:对计算机视觉感兴趣的研发人员,尤其是希望深入了解OpenCV库及其在人脸识别领域的应用者。 使用场景及目标:适用于构建安全认证系统的企业或机构,旨在提高出入管理的安全性和效率。具体应用场景包括但不限于门禁控制系统、考勤打卡机等。 其他说明:文中提供的代码片段仅为基本框架,可根据实际需求调整参数优化性能。同时提醒开发者注意隐私保护法规,合法合规地收集和使用个人生物识别信息。

    Java并发编程面试题详解:123道经典题目解析与实战技巧

    内容概要:本文档详细介绍了Java并发编程的核心知识点,涵盖基础知识、并发理论、线程池、并发容器、并发队列及并发工具类等方面。主要内容包括但不限于:多线程应用场景及其优劣、线程与进程的区别、线程同步方法、线程池的工作原理及配置、常见并发容器的特点及使用场景、并发队列的分类及常用队列介绍、以及常用的并发工具类。文档旨在帮助开发者深入理解和掌握Java并发编程的关键技术和最佳实践。 适合人群:具备一定Java编程经验的研发人员,尤其是希望深入了解并发编程机制、提高多线程应用性能的中级及以上水平的Java开发者。 使用场景及目标:①帮助开发者理解并发编程的基本概念和技术细节;②指导开发者在实际项目中合理运用多线程和并发工具,提升应用程序的性能和可靠性;③为准备Java技术面试的候选人提供全面的知识参考。 其他说明:文档内容详尽,适合用作深度学习资料或面试复习指南。建议读者结合实际编码练习,逐步掌握并发编程技巧。文中提到的多种并发工具类和容器,均附有具体的应用场景和注意事项,有助于读者更好地应用于实际工作中。

    个人健康与健身追踪数据集,包含了日常步数统计、睡眠时长、活跃分钟数以及消耗的卡路里,适用于数据分析、机器学习

    这个数据集包含了日常步数统计、睡眠时长、活跃分钟数以及消耗的卡路里,是个人健康与健身追踪的一部分。 该数据集非常适合用于以下实践: 数据清洗:现实世界中的数据往往包含缺失值、异常值或不一致之处。例如,某些天的步数可能缺失,或者存在不切实际的数值(如10,000小时的睡眠或负数的卡路里消耗)。通过处理这些问题,可以学习如何清理和准备数据进行分析。 探索性分析(发现日常习惯中的模式):可以通过分析找出日常生活中的模式和趋势,比如一周中哪一天人们通常走得最多,或是睡眠时间与活跃程度之间的关系等。 构建可视化图表(步数趋势、睡眠与活动对比图):将数据转换成易于理解的图形形式,有助于更直观地看出数据的趋势和关联。例如,绘制步数随时间变化的趋势图,或是比较睡眠时间和活动量之间的关系图。 数据叙事(将个人风格的追踪转化为可操作的见解):通过讲述故事的方式,把从数据中得到的洞察变成具体的行动建议。例如,根据某人特定时间段内的活动水平和睡眠质量,提供改善健康状况的具体建议。

    《基于YOLOv8的港口船舶靠泊角度偏差预警系统》(包含源码、可视化界面、完整数据集、部署教程)简单部署即可运行。功能完善、操作简单,适合毕设或课程设计.zip

    资源内项目源码是来自个人的毕业设计,代码都测试ok,包含源码、数据集、可视化页面和部署说明,可产生核心指标曲线图、混淆矩阵、F1分数曲线、精确率-召回率曲线、验证集预测结果、标签分布图。都是运行成功后才上传资源,毕设答辩评审绝对信服的保底85分以上,放心下载使用,拿来就能用。包含源码、数据集、可视化页面和部署说明一站式服务,拿来就能用的绝对好资源!!! 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、大作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.txt文件,仅供学习参考, 切勿用于商业用途。

    nginx 访问访问日志按天切割 shell脚本

    nginx

    《基于YOLOv8的核废料运输容器密封性检测系统》(包含源码、可视化界面、完整数据集、部署教程)简单部署即可运行。功能完善、操作简单,适合毕设或课程设计.zip

    资源内项目源码是来自个人的毕业设计,代码都测试ok,包含源码、数据集、可视化页面和部署说明,可产生核心指标曲线图、混淆矩阵、F1分数曲线、精确率-召回率曲线、验证集预测结果、标签分布图。都是运行成功后才上传资源,毕设答辩评审绝对信服的保底85分以上,放心下载使用,拿来就能用。包含源码、数据集、可视化页面和部署说明一站式服务,拿来就能用的绝对好资源!!! 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、大作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.txt文件,仅供学习参考, 切勿用于商业用途。

    《基于YOLOv8的农业无人机播种深度监测系统》(包含源码、可视化界面、完整数据集、部署教程)简单部署即可运行。功能完善、操作简单,适合毕设或课程设计.zip

    资源内项目源码是来自个人的毕业设计,代码都测试ok,包含源码、数据集、可视化页面和部署说明,可产生核心指标曲线图、混淆矩阵、F1分数曲线、精确率-召回率曲线、验证集预测结果、标签分布图。都是运行成功后才上传资源,毕设答辩评审绝对信服的保底85分以上,放心下载使用,拿来就能用。包含源码、数据集、可视化页面和部署说明一站式服务,拿来就能用的绝对好资源!!! 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、大作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.txt文件,仅供学习参考, 切勿用于商业用途。

    uniapp知识付费(流量主)demo

    模拟知识付费小程序,可流量主运营模式

    java高并发之分片上传

    什么是普通上传 调用接口一次性完成一个文件的上传。 普通上传2个缺点 文件无法续传,比如上传了一个比较大的文件,中间突然断掉了,需要重来 大文件上传太慢 解决方案 分片上传

    英二2010-2021阅读理解 Part A 题干单词(补).pdf

    英二2010-2021阅读理解 Part A 题干单词(补).pdf

    2023-04-06-项目笔记 - 第四百五十五阶段 - 4.4.2.453全局变量的作用域-453 -2025.04-01

    2023-04-06-项目笔记-第四百五十五阶段-课前小分享_小分享1.坚持提交gitee 小分享2.作业中提交代码 小分享3.写代码注意代码风格 4.3.1变量的使用 4.4变量的作用域与生命周期 4.4.1局部变量的作用域 4.4.2全局变量的作用域 4.4.2.1全局变量的作用域_1 4.4.2.453局变量的作用域_453- 2025-04-01

    友缘公司钢材管理平台微信小程序的设计与实现.zip

    微信小程序项目课程设计,包含LW+ppt

    GP300单缸液压圆锥破碎机CAD().zip

    GP300单缸液压圆锥破碎机CAD().zip

Global site tag (gtag.js) - Google Analytics