UE4調用VR外設WISEGLOVE數(shù)據手套的(de)LIB和DLL開發庫(kù)的(de)方法
很多小夥伴不知道如何在UE4裏給VR外設寫插件,下麵(miàn)以WONGLOVE數據手套為例,給各位介(jiè)紹一下UE4調用WONGLOVE數據手套的LIB, DLL開發庫的方法:
1.在UE4中創建(jiàn)一個空的blank插件(jiàn)
2.打(dǎ)開插件(jiàn)的.bluid.cs
3.需要將wonglove.lib wonglove.dll文件(jiàn)和對應的include文(wén)件 wonglove.h考到指(zhǐ)定目錄中,通常為項目的Plugins/ThirdParty/Win64(可自定義)
4.添加到工(gōng)程中 代碼如
PublicAdditionalLibraries.Add(lib目(mù)錄 + lib文件名);//加載第三方(fāng)靜態庫.lib
PublicIncludePaths.Add(lib頭文件目錄(lù));
使用(yòng)時在使用的(de)代碼(mǎ)中直接#include 頭(tóu)文(wén)件即可 (有的時候(hòu)編譯會報兩(liǎng)個鏈接錯誤(wù) 重新編譯一下(xià)就好(hǎo)了)
5.使用dll庫, 代碼如(rú)下
需要現在.build.cs中配(pèi)置
PublicDelayLoadDLLs.Add(dll目錄 + dll文件名(míng));
RuntimeDependencies.Add(new RuntimeDependency(dll目錄 + dll文件名));
如果該dll有依賴的(de)dll 需要將依賴的dll放在 binariesPath 相應的平台下 並調用上麵的代(dài)碼加載進來
6.dll調用
調用的方法如下:
例如獲取數據手套(tào)數(shù)據的dll函數原型 bool GetData(unsigned short *data)
則調用代(dài)碼中
typedef int(*AddFunc)(unsigned short *data);
AddFunc tempFunc;
void* pDllHandler = FPlatformProcess::GetDllHandle(*dll路徑);
if (pDllHandler)
{
FString funcName = "GetData";
tempFunc = (AddFunc)FPlatformProcess::GetDllExport(pDllHandler, *funcName);
check(tempFunc);
unsigned short tempdata[19];
int c = tempFunc(tempdata);
}
ps:如果pc上運行正常 打包出(chū)來不好用 原因是插件的.uplugin中 type屬性 改成Runtime就好了 坑了我半天
ps: .使(shǐ)用dll時的路徑與build.cs中的路徑必須相同 否則editor模式下沒問(wèn)題 發布程序就會找不到dll
- 上一(yī)篇(piān):虛幻UE4如何鏈接(jiē)第三方庫(lib和dll) 2018/3/20
- 下一篇:研究人員推出 3D 人(rén)體(tǐ)解剖模型,醫學(xué)學(xué)生練打針不用互相紮(zhā)了 2018/3/14