logo资料库

QT Creator (Mingw编译器) 调用VS (C++库) 的方法.pdf

第1页 / 共7页
第2页 / 共7页
第3页 / 共7页
第4页 / 共7页
第5页 / 共7页
第6页 / 共7页
第7页 / 共7页
资料共7页,全文预览结束
QT Creator (Mingw 编译器) 调用 VS (C++库) 的方法 作者:孙宇 QQ:1064010391 时间:2015/9/18 地点:德国汉堡 参考:http://wenku.baidu.com/view/b4461fd0b9f3f90f76c61b4e.html 是不是在使用 Mingw 版 QT Creator 时会发现有些 VS 编译的库没法用?无奈之下只能改用 臃肿的 VS 来继续工作?本人喜欢 QT 的小清新,故在网页上翻来覆去了很久,找到了如何 用 Mingw 调用 VS 编译库的解决方案,在此共享给广大网友~ Step 1. 下载 Mingw (http://sourceforge.net/projects/mingw/?source=directory) Step 2. 安装后会出现如图所示界面 Step 3. Basic Setup 这栏里的视需求选择,不会挑就都勾上吧!之后点开 All Packages 栏,选 择 mingw32-pexports bin 这一项,如图所示 Step 4. 点击左上角 Installation 选择 Update Catalogue 等待,结束后关闭即可 Step 5. 添加环境变量路径,不会的小伙伴自行百度,这个很简单
Step 6. 开始之前我们还需要确保系统中有 c++filt.exe cat.exe 以及 undname.exe 当然了,这 不是必须的,可在我网盘下载(http://pan.baidu.com/s/1dDk8WIP 提取码 w9er) %--------------------------------- 作者以 Leap Motion SDK 中的 Leap.dll 为例说明如何用 Mingw 版 QT Creator 调用 VS 编译出 的动态链接库 (仅需要 dll 就好) Step 7. 请开始前对着你身边坐着的人无耻的卖个萌!o(∩_∩)o Step 8. 按住 shift 键,在你需要处理的 dll 所在文件夹单机鼠标右键,点击在打开命令窗口
Step 9. 鼠标右键图中黄点点处选属性,并勾选快速编辑模式,其它默认不变 Step 10. 在光标后敲入或复制 (复制操作在将内容 ctrl+c 后,在黑框框中点击鼠标右键即可) pexports Leap.dll -o > Leap.def 后回车 (Leap 请替换成你自己的 dll 名字) Step 11. 运行你的代码,如作者所遇见,此代码用 VS 编译器一点问题没有,但是换做了 Mingw 编译器后就报 undefined reference to 的错 Step 12. 编译一下,在 debug 或 release 目录下找到*.o 文件,稍微了解 Creator 的人应该都不 会陌生,这块就不细说了。作者的类名是 LMTrack,所以我的文件为 lmtrack.o
Step 13. 回到刚才操作 dll 的目录,把*.o 文件考过来 (你也能看到刚才新生成的.def 文件) Step 14. 继续在 cmd 中输入 nm -s lmtrack.o > func.txt (自己替换 lmtrack 和 func 名字) Step 15. 将百度云盘下载的三个文件 (若没下载,那你只能凭经验改 def 文件了) 置于 dll 的 同一目录中,并继续在 cmd 中输入 cat func.txt | c++filt > ref.txt (自己换名字) Step 16. 为了查找方便,作者将 14 与 15 步生成的 txt 分别复制进了 excel 里 (不是必须) , 用写字板打开 def 文件,准备修改
Step 17. 因为 Leap Motion 导出的东西比较多,所以作者的写字板里很满,作者以修改其中 一个函数为例进行说明,图中红框框处是导出编号 Step 18. 其实这种码看多了也就知道什么意思了,不过本篇文章是面向新手的,所以别急, 我来告诉你如何去读,在 cmd 中键入 undname 待翻译码 (导出编号不要复制)
Step 19. 看懂了吧?下面就是解析出的可读代码 (会 C++的人都会懂的) ,OK,在你输出的 ref.txt 文档对应的表格中查找解析出的内容 Leap::Controller::enableGesture (自己替换) Step 20. 于是在第 367 行找到了它,记住行数,跳转到 func.txt 对应的行 Step 21. 在 func.txt 对应的表格中发现 Mingw 对应的函数写法 Step 22. 复制这行编码,注意前面要少复制一个下划线! Step 23. 将用写字板打开的 def 文件中的 165 号导出函数前添加上复制的内容,并在两者间 加入“ = ”号,如图所示
Step 24. 按此方法修改完所有的或你自己需要的函数后,保存并关闭写字板 Step 25. 最后在 cmd 中输入 dlltool -D Leap.dll -d Leap.def -l Leap.lib -k (自己换名字) 即可! 这样就生成了一个可用 Mingw 来编译的 lib 文件!PS:最后那个命令生成*.a 也是可以的~ 教程临近结束,再卖个萌~!o(∩_∩)o 祝大家每天开心~!
分享到:
收藏