UE4鏈結第三方庫(lib和dll)

2021-09-17 02:14:45 字數 1691 閱讀 1733

摘要:

寫這個文章主要是被ue官方的wiki和answerhub誤導了很久,這本來是乙個很常見和基本的問題,但是無論是官方的wiki或者是論壇上的提問都十分散亂並且充斥各種錯誤,因此記錄下這個在開發中時常遇到的問題。

在開發中經常遇到的問題就是加入某第三方庫的支援,這樣的第三方庫往往屬於無原始碼,而且可能是靜態lib或者是動態dll甚至兩者皆有。ue4的編譯管理用的是自己的ubt(unreal binary tool)因此鏈結第三方庫的工作主要是編寫ubt指令碼。

1.以外掛程式方式整合.

基本上這個是最推薦的整合第三方庫的方式,因為能夠很好的隔離你的**和第三方**的影響,在ue4的原始碼裡也可以看到很多第三方庫都是這麼整合的,比如*****2d,leapmotion等等。在ue4中新建外掛程式的方式略去不表,當你新建完你的外掛程式之後,你會在外掛程式的**目錄下看到乙個

***.build.cs
接下來要做的就是修改這個指令碼:

得到當前路徑

private string modulepath

}

關於第三方庫放的位置,一般是在plugin的原始碼同級資料夾下建乙個thirdparty資料夾,裡面放上include lib等等。

得到thirdparty資料夾的路徑

private string thirdpartypath

}

為工程新增include第三方庫的標頭檔案路徑

在模快的建構函式裡加上:

publicincludepaths.addrange(

new string

);privateincludepaths.addrange(

new string

);

鏈結第三方庫的lib

接下來需要在編譯工程時加入第三方靜態庫的鏈結,靜態鏈結屬於工程在編譯期間做的事情,因此這塊需要通過cs指令碼完成,而dll動態鏈結庫的載入是執行期的事,因此需要在cpp檔案中執行。

我們新建乙個叫load***lib的函式,並把它放在模組的建構函式結尾執行:

public bool load***lib(targetinfo target)

return islibararysupported;

}

這樣就可以保證在編譯期鏈結上我們的第三方lib。

鏈結動態dll

這個工作需要在plugin的執行期完成,在外掛程式的source檔案下找到乙個與外掛程式名字同名的cpp檔案開啟。會看到乙個startupmodule的函式,我們需要在這裡得到dll檔案的handle。

在startupmodule中新增下面的**:

void f***module::startupmodule()

}

這裡我們用的是pluginmanager找到的外掛程式所在的路徑,值得注意的是使用這個函式時需要在build.cs

中加入

privatedependencymodulenames.addrange(

new string

);

否則工程會鏈結出錯。

UE4鏈結第三方庫

首先寫乙個第三方庫 h cpp view plain copy pragma once ifndef mytest lib h define mytest lib h include include intaddd inta,intb endif cpp cpp view plain copy in...

UE4 除錯第三方庫相關問題

ue4可以整合第三方庫 包含自己編寫的庫 往往需要ue4和第三方庫一起除錯,因此需要使用第三方庫的除錯版本。以版本ue4.9.2來研究相關問題。多執行緒 mt 0 多執行緒除錯 mtd 1 多執行緒dll md 2 多執行緒除錯dll mdd 3if compileenvironment.confi...

UE4使用第三方庫讀寫xml檔案

在遊戲開發過程中,讀寫xml幾乎已經成為不可或缺的功能,但是由於有一點點的先入為主,當時直接選擇了使用c 常用的tinyxml,於是這裡就需要引用第三庫,其實ue4有乙個自帶的xmlparser,也可以輕鬆讀寫xml。下面我們就看看這兩種的方式的詳細操作。一 準備工作 1.用ue4建立乙個空模板的c...