Ubuntu環境下使用Unity3D調用C++編寫的Linux so動態鏈接庫

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搜索到動態鏈接庫了。

發佈了65 篇原創文章 · 獲贊 268 · 訪問量 56萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章