免费国产网站_秋霞午夜一区二区三区视频_99热在线看_日韩精品久久一区二区_午夜看一级毛片_天天鲁在视频在线观看

  • 您的位置:首頁 > 新聞動態 > UE4

    虛幻UE4如何鏈接第三方庫(lib和dll)

    2018/3/20??????點擊:
    摘要:寫這個文章主要是被UE官方的wiki和answerhub誤導了很久,這本來是一個很常見和基本的問題,但是無論是官方的wiki或者是論壇上的提問都十分散亂并且充斥各種錯誤,因此記錄下這個在開發中時常遇到的問題。
    在開發中經常遇到的問題就是加入某第三方庫的支持,這樣的第三方庫往往屬于無源碼,而且可能是靜態lib或者是動態dll甚至兩者皆有。UE4的編譯管理用的是自己的UBT(unreal binary tool)因此鏈接第三方庫的工作主要是編寫UBT腳本。
    1.以插件方式集成.
    基本上這個是*推薦的集成第三方庫的方式,因為能夠很好的隔離你的代碼和第三方代碼的影響,在UE4的源碼里也可以看到很多第三方庫都是這么集成的,比如paper2D,leapmotion等等。在UE4中新建插件的方式略去不表,當你新建完你的插件之后,你會在插件的代碼目錄下看到一個
    xxx.build.cs
    接下來要做的就是修改這個腳本:
    得到當前路徑
    1. private string ModulePath
    2. {
    3.    get { return ModuleDirectory; }
    4. }
    關于第三方庫放的位置,一般是在plugin的源碼同級文件夾下建一個ThirdParty文件夾,里面放上include lib等等
    。得到ThirdParty文件夾的路徑
    1. private string ThirdPartyPath
    2. {
    3.         get { return Path.GetFullPath(Path.Combine(ModulePath,"../../ThirdParty/")); }
    4. }
    為工程添加include第三方庫的頭文件路徑
    在模快的構造函數里加上:
    1. PublicIncludePaths.AddRange(
    2.         new string[] { 
    3.              Path.Combine(ThirdPartyPath, "xxx", "Include"),
    4.         }
    5.         );
    6.             
    7.  
    8. PrivateIncludePaths.AddRange(
    9.         new string[] {
    10.             Path.Combine(ThirdPartyPath, "Foxit", "Include"),
    11.         }
    12.         );
    鏈接第三方庫的Lib
    接下來需要在編譯工程時加入第三方靜態庫的鏈接,靜態鏈接屬于工程在編譯期間做的事情,因此這塊需要通過cs腳本完成,而dll動態鏈接庫的加載是運行期的事,因此需要在cpp文件中執行。
    我們新建一個叫LoadxxxLib的函數,并把它放在模塊的構造函數結尾執行:
    1. public bool LoadxxxLib(TargetInfo Target)
    2.     {
    3.         bool isLibararySupported = false;
    4.         if ((Target.Platform == UnrealTargetPlatform.Win64) || (Target.Platform == UnrealTargetPlatform.Win32))
    5.         {
    6.             isLibararySupported = true;
    7.             string PlatformString = (Target.Platform == UnrealTargetPlatform.Win64) ? "Win64" : "Win32";
    8.             PublicAdditionalLibraries.Add(Path.Combine(LibraryPath, PlatformString + ".lib"));
    9.             PublicDelayLoadDLLs.Add(PlatformString + ".dll");
    10.             RuntimeDependencies.Add(new RuntimeDependency(LibraryPath + PlatformString + ".dll"));
    11.         }
    12.         return isLibararySupported;
    13.     }

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


    鏈接動態DLL
    這個工作需要在plugin的運行期完成,在插件的source文件下找到一個與插件名字同名的cpp文件打開。會看到一個StartupModule的函數,我們需要在這里得到dll文件的handle。

    在StartupModule中添加下面的代碼:

    1. void FXXXModule::StartupModule()
    2. {
    3. #if PLATFORM_64BITS
    4.     FString platform = TEXT("win64.dll");
    5. #else
    6.     FString platform = TEXT("win32.dll");
    7. #endif
    8.     FString path = IPluginManager::Get().FindPlugin("XXX")->GetBaseDir(); 
    9.     FString dllpath = path + "/ThirdParty/XXX/Lib/" + platform;
    10.     PdfDllHandle = FPlatformProcess::GetDllHandle(*dllpath);
    11.     if (!PdfDllHandle)
    12.     {
    13.         UE_LOG(LogTemp, Warning, TEXT("Failed to load PDF library."));
    14.     }
    15. }
    這里我們用的是PluginManager找到的插件所在的路徑,值得注意的是使用這個函數時需要在build.cs中加入
    1. PrivateDependencyModuleNames.AddRange(
    2.             new string[]
    3.             {
    4.                 ...
    5.                 "Projects",
    6.             }
    7.             );

    否則工程會鏈接出錯。


    主站蜘蛛池模板: 亚洲中文字幕精品久久久久久动漫_131美女视频黄的免费_激情久久一区二区_国产色情老熟女NBA控卫之神_午夜黄色福利视频_无码人妻一区二区三区线 | 四虎视频在线精品免费网址_青草青草久热国产精品_免费在线亚洲_www一片黄_最色www_国产女上位疯狂榨精合集 | 国产麻豆91欧美一区二区_亚洲欧洲精品一区二区三区四区_国产日韩精品久久久_欧美a级理论片_77777_亚洲午夜久久多人_欧美丰满老妇性猛交 | 国产免费无遮挡在线观看视频_在线观看视频二区_中文字幕第十一页_国产精品成人片在线观看_www.91成人_国产成人亚洲综合色婷婷秒播 | 中文字幕一区二区人妻_日本高清黄色片_久久综合给合久久国产免费_亚洲影院免费_黄色一二区_91sex国产 | 777午夜精品免费观看_av无遮挡_国产精品有限公司_国产一区二区三区免费观看潘金莲_欧美丰满老熟妇aaaa片_免费看黄在线看 | 名器高h禁伦桌上肉伦h_精品国免费一区二区三区_欧美性猛交xxxx乱大交极品_精品在线视频免费观看_他扒开我小泬添我视频_国产色XX群视频射精 | 最近中文字幕高清mv在线视频_亚洲阿v天堂无码z2018_伊人天天久大香线蕉AV色_国产乡下妇女做爰视频_亚洲一级片网站_国产精一品亚洲二区在线播放 | 精品久久二区_免费女上男下xx00xx00视频_日韩精品无码中文字幕一区二区_在线成人免费观看_国内伊人久久久久久网站视频_a级毛片三个男人一女 | 毛片在线视频_99热99re6国产在线播放_欧美私人家庭影院_拔插拔插免费视频_国产亚洲精品区_欧美巨乳在线观看 | 日本女人hd_亚洲精品乱码8久久久久久日本_91免费资源_在线影院色_国产精选污视频在线观看_国产免费福利 | 美女张开腿露出尿口与奶头的照片_亚洲综合精品第一页_国产一二三四区中_深夜福利视频在线_欧洲精品码一区二区三区_99re8精品视频在线观看 | 日韩视频精品_国产综合内射日韩久_让少妇高潮无乱码高清在线观看_国产精品影院在线_扒开双腿疯狂进出爽爽爽视频_中文字幕亚洲在线 | 黄网免费入口_国产露脸女上位在线视频_午夜亚洲国产理论片4080_91精品久久久久久_亚洲成av人在线观看网址_成年片在线观看 | 国产一品道av在线一二三区_麻豆精品免费观看_日本黄色特级片_2021年最新最全婷婷丁香_日本一区二区视频_国产av明星换脸精品网站 | 麻豆一区二区三区_蜜桃网在线观看_日本综合色_欧美一级淫片aaaaaaa免费_国产精品视频tv_国产精品久久久久久在线观看 | 久久先锋影音av鲁色资源_kisskisskiss三季在线播放_欧日韩在线观看_国产精品第55页_在线观看斗破苍穹_精选一区 | 成人免费无遮挡无码黄漫视频_国产三区在线看_a级毛片大全_国产精品久久免费观看spa_聚宝盆短剧免费观看_91影音先锋 | 人妻中文字幕乱人伦在线_欧美黄色a级片_国产亚洲日韩在线一区二区三区_久久e久久_麻豆成人精品视频_av片毛片 | 最近中文字幕mv在线视频2018_在线日韩中文字幕_久久99亚洲精品久久99果冻_亚洲精品第三页_www.欧美在线观看_亚洲中文字幕无码专区 | 亚洲天天综合_97亚洲狠狠色综合久久_成年人福利视频_欧美日韩国产成人在线观看_日本乱人伦aⅴ精品潮喷_内射中出无码护士在线 | 最新av网址大全_欧美黄在线_夜夜嗨av一区二区三区四季av_亚洲第一AV无码专区_国产精品玖玖资源站大全_国内午夜国产精品小视频 | 中文字幕―色哟哟_人人射在线_福利精品_国产啊灬啊灬啊灬快好深视频_亚洲精品在线观看的_看黄色片免费的 | 欧美一区亚洲_国产精品久久久久久喷浆_久久9966_亚洲婷婷噜噜_JK制服爆乳裸体自慰流水免费_国产黄色片麻豆 | 女生裸体视频网站在线观看_www亚洲视频_午夜在线观看免费_99国产在线_久久久精品免费观看_久久这里只有精品1 | 永夜星河在线观看_日韩色性视频_日本成人免费网站_日本在线看_国产a一级毛片爽爽影院无码_久久xxx | 人人插人人爽_亚洲最新在线_国产精品黄页免费高清在线观看_天天天欲色欲色WWW免费_夜夜草免费视频_国产精品无码网站在线观看播放 | 亚洲伦乱视频_chinese乱子伦XXXX_亚洲国产无码在线观看_日韩在线播放一区_欧美日韩在线观看不卡_九色综合婷婷综合 | 一级视频网_92少妇精品免费视频_精彩久久_四虎影院中文字幕_久久久久成人免费视频_美女网站久久 | 女人自慰Aa大片_五月狠狠亚洲小说专区_欲色天天网综合久久_国产天堂一区二区_国产精品偷伦视频免费观看国产_国产裸体XXXX视频 | cao在线_亚洲AV色无码乱码在线观看_国产一区二区三区四区五区VM_色诱av手机版_狠狠躁天天躁综合网_久久久久青草 | 女人毛片_国产人妖XXXX做受视频_久久成年网_国产精品资源_精品国产免费观看_麻豆亚洲AV熟女国产一区二 | 久久在看_日韩精品在线中文字幕_国产精品高潮呻吟三区四区_晚上在线观看_a片人人澡c片人人人妻_九七午夜视频 | 欧美精品成人在线视频_精品一区二区三区网站_噼里啪啦大全免费观看_少妇的激情夜夜爽爽爽爽爽_国产精品青草久久久久福利99_性妲己一级淫片免费 | 女人自慰Aa大片_五月狠狠亚洲小说专区_欲色天天网综合久久_国产天堂一区二区_国产精品偷伦视频免费观看国产_国产裸体XXXX视频 | 国产成人精品一区二区仙踪林_不卡中文字幕在线观看_欧美污视频_欧美激情天堂_日韩精品一区二_久草小说 | 黑人好猛厉害爽受不了好大撑_一区在线免费视频_亚洲视频一区在线_91挑色_国产偷抇久久精品A片图片_免费国产黄网站在线看 | 国内自拍视频网站_1024污_亚洲免费a视频_91视频欧美_久久久久久久久久久久久久动漫_久久无码喷吹高潮播放不卡 | 亚洲av毛片一区二二区三三区_91传媒91久久久_一本一道久久a久久综合精品图_无码国模大尺度视频在线观看_亚洲精品无码中文久久字幕_久草在线国产视频 | 国产精品久久精品国产_亚洲精品自在在线观看_91视频在线免费_成年在线免费视频_av在线网站无码不卡的_欧美一区二区日韩 | 伊伊人成亚洲综合人网香_91视频天堂_久久avav_青草青视频在线观看_国产精品一区二区无码视频公司_日韩亚洲AV无码一区二区不卡 |