摘要:
寫這個文章主要是被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...