UE4使用第三方库

http://blog.csdn.net/lunweiwangxi3/article/details/48373033


UE4使用第三方库

就怕 辜负了所有的努力,也配不上自己的野心  ...

现在,我就把虚幻引用第三方库并打包完成这个所有步骤,过程,细节都记录下来.

第一步:先做一个库

a.打开vs2013->新建项目->VC++空项目->项目名称:MyDLL确定

b.右击项目->添加->类->名称:Mine->确定,于是便有了Mine.h,和Mine.cpp这两个文件

       这里先插播一个陨石坑:原先,我不想自己做库,我想在虚幻C++中运用C++标准库,令人无奈的是,C++标准库对DWORD类型有个定义:unsigned long,但是!!!凡事都有个但是!虚幻引擎也有个对DWORD类型的定义,好,就算它们定义的都一样,都是unsigned long,都会避免不了类型重定义的问题.如果是自己写的库,随便删一个就行,但是!!!凡事都有个但是!一个是C++标准库,集广大劳动人民智慧结晶;一个是虚幻源代码,两尊大神一个都不能动.

       有两个解决办法,原理都差不多,第一种:定义一个自己的类,在.cpp文件中包含C++标准库,这样,虚幻中引用自己的头文件,就不会重复定义报错了.机智.但是!!!凡事都有个但是!虚幻C++代码中每一个类,必须包含 项目名.h,项目名.h里面只有 #include "Engine.h",也就是,虚幻每个类都要包含#include "Engine.h",不然就报错...这样一来,火线和地线又要碰面了,GG思密达...第二种方法,继承第一种方法,封装成库文件,这样,就只要.h头文件即可.哈哈.

c.我们就封装一个Add函数, Mine.h 内容如下: int Add(int a, int b); Mine.cpp内容如下:int Add(int a, int b){ return a+b; }

    到处函数到库有两种方法,一种是加前缀 _declspec(dllexport)   比如_declspec(dllexport) int Add(int a, intb);这样导出的dll就有了;

    第二种加模块文件.def  .     右击项目->添加->新建项->代码->模块定义文件(.def)->名称:Source.def->添加.打开该def模块文件,添加这几行:

   LIBRARY MyDLL   //项目名称为MyDLL

   EXPORTS               //导出

   Add                         //导出Add这个函数,若有别的函数要导出,继续添加.

   关于更多,请百度.

d.右击项目->属性->常规->配置类型->改成:动态库(.dll)或者静态库->应用->确定->编译项目(Release模式)

    这里有两点需要注意:1.C++的Release模式对应的是虚幻代码中的Develop-Edit模式,另外,选了Release,重新执行d步骤 ; 2.看看是不是都是32位或者64

    这时候 在Release文件夹下就有 MyDLL.dll 和 MyDLL.lib 文件了,其它的中间文件pdb,exp,不要.第一步,生成第三方库,完毕.

   (每次修改库源码,都要重新编译,替换掉这3个文件,静态库2个)

第二步:虚幻C++代码调用库

   曾经的我是多么天真无邪,天真地认为虚幻c++会和标准c++是一个物种,但是我错了...

   插播一个行星坑:虚幻代码中,引用外部库嘛.太简单了,项目->属性->配置属性,添加包含目录,库目录,ok,代码中载入库文件 #pragma comment(lib,"MyDLL.lib ");大功告成!yes,能 编译,能运行,能装逼,但是!凡事都有个但是!!!一打包,我艹,才发现它不认识这个库~~!!!

 打个不成文的切当比方 标准C++好比是一匹骏马,虚幻C++好比是一头帅驴,它们生个一个骡子,该骡子也很牛比,能跑能跳能装逼,但是!凡事都有个但是!!!它不孕不育!!!!!!!!!

   都走到这一步了,确实伤心,也不会搞,眼看就要辜负自己所有的野心了.我就百度了.没用.官网回答中心找了好多好多资料,看了好多好多英文,感觉还不错,有道字典查查,练练英文,哎哟,不错哦.眼光一亮,竟然遇到个SB遇到的问题和我一样!!!点击打开链接(注:SB是我对大神们的尊称,无恶意)

   让我死也没想到的是,虚幻C++竟然要在C#文件中改配置,我堂堂一个c++程序员,新建的是C++虚幻项目,居然还有在C++文件中配置不了事情.真的想不到...

a.创建一个虚幻C++项目->C++->空白->没有初学者内容->命名Test002->创建项目

b.把刚才我们做好的库复制到虚幻项目文件夹下,这样创建文件夹,并对号入座:

c.打开虚幻项目中的 项目名称.Build.cs文件

打开,并添加库和包含目录

(记得添加  using System.IO;)

如果是静态库,这样设置包含目录和库就行了;但是,如果是动态库,那就要把.dll文件剪切放到生成EXE的目录下,比如32位的,就放到Binaries/Win32.编译,不过,就是路径的问题了,好好核对.这才是虚幻C++的添加外部库的方式--用C#...(我好像看懂了些什么...虚幻想让C++和C#结为亲家...)

注意哦,如果虚幻C++中运用标准C++加载库的方式,包含目录,库目录,#pragma comment(...)的话,你就准备生骡子吧!!!

第三步:打包

     CS配置路径也配置好了,该做的都做了,不该做的也都做了,打包竟然给我出了这样一个错误:

     现在,插播一个神坑:

      这错误轻描淡写得连它妈妈都不会改...

     

    关于这个错误,群里的人说重新编译虚幻,或者重装虚幻...不知道可不可行,感觉不实际.
     我的解决方法是:原先项目是在桌面上的,后来,我把它挪到了E盘...打包就通过了. - -!
    这是唯一一次我用第六感解决了这么神秘的BUG!嗯,操作不行,意识就一定要牛逼~!

但是!凡事都有个但是!!!我始终都不晓得为什么这样就能解决这个打包问题.

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值