Mingw版QtCreator调用VS编译的C++库的方法孙宇rain.sunn@foxmail.com2015.10.23中科院深圳先进技术研究院参考:是不是在使用Mingw版QTCreator时会发现有些VS编译的库没法用?无奈之下只能改用臃肿的VS来继续工作?本人喜欢QT的小清新,故在网页上翻来覆去了很久,找到了如何用Mingw调用VS编译库的解决方案,在此共享给广大网友~Step1.下载Mingw(=directory)Step2.安装后会出现如图所示界面Step3.BasicSetup这栏里的视需求选择,不会挑就都勾上吧!之后点开AllPackages栏,选择mingw32-pexportsbin这一项,如图所示Step4.点击左上角Installation选择UpdateCatalogue等待,结束后关闭即可Step5.添加环境变量路径,不会的小伙伴自行百度,这个很简单Step6.开始之前我们还需要确保系统中有c++filt.execat.exe以及undname.exe当然了,这不是必须的,可在我网盘下载(提取码w9er)%---------------------------------作者以LeapMotionSDK中的Leap.dll为例说明如何用Mingw版QTCreator调用VS编译出的动态链接库(仅需要dll就好)Step7.请开始前对着你身边坐着的人无耻的卖个萌!o(∩_∩)oStep8.按住shift键,在你需要处理的dll所在文件夹单机鼠标右键,点击在打开命令窗口Step9.鼠标右键图中黄点点处选属性,并勾选快速编辑模式,其它默认不变Step10.在光标后敲入或复制(复制操作在将内容ctrl+c后,在黑框框中点击鼠标右键即可)pexportsLeap.dll-oLeap.def后回车(Leap请替换成你自己的dll名字)Step11.运行你的代码,如作者所遇见,此代码用VS编译器一点问题没有,但是换做了Mingw编译器后就报undefinedreferenceto的错Step12.编译一下,在debug或release目录下找到*.o文件,稍微了解Creator的人应该都不会陌生,这块就不细说了。作者的类名是LMTrack,所以我的文件为lmtrack.oStep13.回到刚才操作dll的目录,把*.o文件考过来(你也能看到刚才新生成的.def文件)Step14.继续在cmd中输入nm-slmtrack.ofunc.txt(自己替换lmtrack和func名字)Step15.将百度云盘下载的三个文件(若没下载,那你只能凭经验改def文件了)置于dll的同一目录中,并继续在cmd中输入catfunc.txt|c++filtref.txt(自己换名字)Step16.为了查找方便,作者将14与15步生成的txt分别复制进了excel里(不是必须),用写字板打开def文件,准备修改Step17.因为LeapMotion导出的东西比较多,所以作者的写字板里很满,作者以修改其中一个函数为例进行说明,图中红框框处是导出编号Step18.其实这种码看多了也就知道什么意思了,不过本篇文章是面向新手的,所以别急,我来告诉你如何去读,在cmd中键入undname待翻译码(导出编号不要复制)Step19.看懂了吧?下面就是解析出的可读代码(会C++的人都会懂的),OK,在你输出的ref.txt文档对应的表格中查找解析出的内容Leap::Controller::enableGesture(自己替换)Step20.于是在第367行找到了它,记住行数,跳转到func.txt对应的行Step21.在func.txt对应的表格中发现Mingw对应的函数写法Step22.复制这行编码,注意前面要少复制一个下划线!Step23.将用写字板打开的def文件中的165号导出函数前添加上复制的内容,并在两者间加入“=”号,如图所示Step24.按此方法修改完所有的或你自己需要的函数后,保存并关闭写字板Step25.最后在cmd中输入dlltool-DLeap.dll-dLeap.def-lLeap.lib-k(自己换名字)即可!这样就生成了一个可用Mingw来编译的lib文件!PS:最后那个命令生成*.a也是可以的~教程临近结束,再卖个萌~!o(∩_∩)o祝大家每天开心~!