ubuntu环境下使用unity3d调用c++编写的linuxso动态链接库(代码片段)

雁回晴空 雁回晴空     2022-12-08     182

关键词:

Unity3D已经有了支持Linux的社区版本。要在Linux环境下开发Unity3D程序,首先要安装Linux版的Unity。地址如下:

https://forum.unity3d.com/threads/unity-on-linux-release-notes-and-known-issues.350256/#post-2556301

1 制作Linux下的动态链接库

Linux下的动态链接库是.so格式的。首先我们需要写一个c++的文件。为了简单,我们呢可以编写如下例程,文件名为libtest.cpp

#include <stdio.h>
extern "C" int sum(int a, int b)

    return a + b;

然后在该文件的当前路径下打开终端,执行如下命令:

gcc -c -o libtest.o libtest.cpp

gcc -shared -o libtest.so libtest.o

这样,我们就获得了libtest.so这个动态链接库。


2 Unity3D中调用动态链接库

在C#脚本文件中添加

[DllImport ("libtest.so", EntryPoint="sum")]
static extern int sum(int a, int b);

把上一步中做好的libtest.so文件放在unity3D工程的根目录下。

到这一步还没有结束,因为Linux环境下,Unity3D默认搜索目录是不包含当前目录的。如果是build出来的程序,我们把so文件和可执行文件放在一起就能执行;但是如果是Unity调试模式下,so文件放在工程根目录下或者Assets/Plugins下,都是找不到的。为了开发方便,我们希望能像windows下一样,在调试模式下也能调用动态库,所以我们就需要修改/etc/profile,在文件末尾加上两行

LD_LIBRARY_PATH=./

export LD_LIBRARY_PATH

这样,就可以让Unity搜索到动态链接库了。

c++基础——ubuntu下编写c++环境配置总结(c++基本简介ubuntu环境配置编写简单c++例程)(代码片段)

...———————————————目录0引言1 C++在Ubuntu中环境设置2编写C++程序测试3总结0引言        本次博文内容主要介绍在Ubuntu在终端窗口下使用vi/vim编辑一个C++源文件,通过编写最简单的示例“He... 查看详情

ubuntu下使用jnijava调用c++的例子(代码片段)

TestJNI.java1publicclassTestJNI23static4System.load("/home/buyizhiyou/workspace/JNI/src/libTestJNI.so");//注意此处加载.so文件56publicnativeStringtest(Stringinp);//此处需要声明78publicstaticvoidmain(String[]args) 查看详情

c++调用net类库概述

...调用Net类库,所以特此总结一下,方便日后的使用。整体环境为VisualStudio2019,包括NetFramwork4.7和Core3.1,同时,文章也会对网上普遍文档所缺乏的环境搭建,微软MSDN的有关说明引用补充进来。备注:因为将demo代码发布到了github上... 查看详情

unity3d学习:c#和c++的相互调用

前言不知不觉已经一年了,这一年来一直忙于公司项目疯狂加班,很少有自己的时间写下东西。不过好在项目最近也步入正轨了,正好抽空写点东西记录下学到的一些东西。公司项目是一个端游IP移植手游,端游是基于C++开发的... 查看详情

如何调用使用c++操作的方法

】如何调用使用c++操作的方法【英文标题】:Howtoinvokemethodwhichusingc++operate【发布时间】:2021-12-2911:07:47【问题描述】:我想调用下面的方法operatorid()const,由C++opreate编写structCKBoxedValueCKBoxedValue()noexcept:__actual(nil);//Couldreplacethiswith... 查看详情

Win32环境下从ntdll.dll调用Nt函数,C++

】Win32环境下从ntdll.dll调用Nt函数,C++【英文标题】:CallingNtfunctionfromntdll.dllinWin32environment,C++【发布时间】:2012-04-2123:05:29【问题描述】:我想从ntdll.dll中调用一些Nt函数,我正在这样做。对于调用:NtTestAlert(),您需要典型的ntca... 查看详情

如何在 C++ 中调用大型 python 脚本?

...两个不同脚本的各个方面并将它们用于单个C++程序(使用Ubuntu)。我遇到的问题是其中一个脚本是用C++编写的,另一个是用python编写的。我一直在尝试使用Python.h库来完成此操作,但是(对于编程来说是相当新的),我找不到任... 查看详情

如何在 Clion 中使用虚拟环境从 C++ 调用 Python?

】如何在Clion中使用虚拟环境从C++调用Python?【英文标题】:HowtouseavirtualenvironmenttocallPythonfromC++inClion?【发布时间】:2021-03-0807:25:03【问题描述】:我想在Clion中使用虚拟环境从C++调用Python。当我在终端上运行它时,我可以在C++... 查看详情

将 Unity3D 用作带有 OpenGL 应用程序的 Win32 c++ 的 GUI

】将Unity3D用作带有OpenGL应用程序的Win32c++的GUI【英文标题】:UseUnity3DasGUItoaWin32c++withOpenGLapp【发布时间】:2016-08-2521:43:44【问题描述】:我有一个使用大量OpenGL代码的C++编写的Win32应用程序。现在我们使用OpenGL代码渲染所有的GUI... 查看详情

golang调用c++动态库(winlinux环境)(代码片段)

...已有的c++库,以下分别演示在linux跟windows开发环境下怎样加载动态库。linux下的动态库为.so文件、win动态库为.dll文件test.cpp生成test.so(linux)、test.dll(win)#ifdef_WINDOWS#else#defineWINAPIextern"C"WI 查看详情

如何编写代码以使用 microsoft visual c++ 调用 JNI [关闭]

】如何编写代码以使用microsoftvisualc++调用JNI[关闭]【英文标题】:HowtowritecodetocallJNIusingmicrosoftvisualc++[closed]【发布时间】:2011-05-3108:56:38【问题描述】:如何在microsoftvisualc++2010Express中编写C代码?我做不到。我正在编写一些C代码... 查看详情

c++调用matlab数学函数问题

...方法:VisualC++中使用MATLAB语言C,C++数学函数库MATLAB开发环境的C,C++数学函数库以mwArray结构体为数据核心,使用mcc命令将M文件转换成的C/C++文件可以直接在ViusalC++开发环境中使用,但是编译后的C,C++文件一般程序冗长,代码可... 查看详情

yolo-darknet实战:ubuntu下qt自建yolov4工程(c++版本)(代码片段)

文章目录1.yolov4.pro文件配置2.QT下使用C++调用YOLOv4检测接口3.QT下使用C++调用YOLOv4-Tiny检测接口4.报错与解决方法5.检测效果1.yolov4.pro文件配置TEMPLATE=appCONFIG+=consolec++11CONFIG-=app_bundleCONFIG-=qtSOURCES+=main.cpp# 查看详情

yolo-darknet实战:ubuntu下qt自建yolov4工程(c++版本)(代码片段)

文章目录1.yolov4.pro文件配置2.QT下使用C++调用YOLOv4检测接口3.QT下使用C++调用YOLOv4-Tiny检测接口4.报错与解决方法5.检测效果1.yolov4.pro文件配置TEMPLATE=appCONFIG+=consolec++11CONFIG-=app_bundleCONFIG-=qtSOURCES+=main.cpp# 查看详情

在linux环境下使用gfortran编译器生成fortran语言的.so共享对象文件并使用jna调用带参方法(代码片段)

在Linux环境下使用gfortran编译器生成fortran语言的.so共享对象文件并使用JNA调用带参方法1致谢和参考文章1.1致谢1.2参考文章2环境介绍3整体思路4具体步骤4.1环境准备4.2编写测试的fotran源文件4.3在linux环境中编译fortran源文件4.4将生成... 查看详情

ubuntu(linux)安装vscode并配置c++编译及cmake多文件编译(代码片段)

目录标题VScode配置c++编译环境1.Linux系统安装2.在Ubuntu中安装VScode2.1.首先下载对应系统的VScode安装包2.2.安装VScode3.在ubuntu系统下的vscode中配置g++/gcc编译、运行环境3.1.打开VSCode,快捷键(Ctrl+Shift+X)打开扩... 查看详情

多线程编程之windows环境下创建新线程

在Win32API中,创建线程的基本函数是CreateThread,而_beginthread(ex)是C++运行库的函数。为什么要有两个呢?因为C++运行库里面有一些函数使用了全局量,如果使用CreateThread的情况下使用这些C++运行库的函数,就会出现不安全的问题。... 查看详情

在linux环境下使用gfortran编译器生成fortran语言的.so共享对象文件并使用jna调用带参方法(代码片段)

在Linux环境下使用gfortran编译器生成fortran语言的.so共享对象文件并使用JNA调用带参方法1致谢和参考文章1.1致谢1.2参考文章2环境介绍3整体思路4具体步骤4.1环境准备4.2编写测试的fotran源文件4.3在linux环境中编译fortran源文件4.4将生成... 查看详情