作者whatai (多多)
看板C_and_CPP
标题[问题] 如何使用minGW编译DLL (with def档)
时间Tue Jul 12 18:21:03 2016
开发平台(Platform): (Ex: VC++, GCC, Linux, ...)
minGW
额外使用到的函数库(Library Used): (Ex: OpenGL, ...)
无
问题(Question):
目前想将手上的专案(公司内部N个library)
采用minGW来编译
先前是使用VC6.0来编 但是一个个编太麻烦
目前想跟linux整合 采用makefile或mk来管理
但是目前做下来发现
minGW可以顺利编出lib, dll 以及exe
exe也可以执行
但是编译出来的lib dll却无法在VC6.0, VS13 上运行
会出现以下错误讯息
Error 1 error LNK2019: unresolved external symbol "char * __cdecl
HelloWorld(void)" (?HelloWorld@@YAPADXZ) referenced in function
_wWinMain@16 E:\work\dev\MINGW_Test\MINGW_Test\MINGW_Test.obj
Error 2 error LNK1120: 1 unresolved
externals E:\work\dev\MINGW_Test\Debug\MINGW_Test.exe
想请教各位大大是我的作法有问题吗?
相关程式码可以请大大参考以下连结
https://drive.google.com/open?id=0B-Slp35hVwQfZy1XRWxOeEpBb28
MINGW_Test 为vs13专案
windows_mingw 为mingw编译所需的档案以及相关makefile
请各位大大不吝指教
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 60.251.110.174
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1468318869.A.A9E.html
1F:→ uranusjr: 这看起来是 C++?如果是的话本来就不能混用, 出错是正常 07/12 19:08
2F:→ uranusjr: 其实即使是 C 也没有保证相容性, 只是实务上有机会可以 07/12 19:08
3F:→ uranusjr: 连 VS 各版本之间都不能保证相容了 07/12 19:08
4F:→ whatai: C++的话 应该可以用extern C 来解决, 另外真正要编译的 07/12 19:20
5F:→ whatai: code 已经可以各自在linux/windows上编译, 但想用mingw 07/12 19:21
6F:→ whatai: 来编译, 如此可以省去一大堆的专案精灵设定 以及打开专案 07/12 19:21
7F:→ whatai: 才能编译的功, 并且可以沿用(或小修改)makefile来达成功效 07/12 19:22
8F:→ whatai: 或是有大大可以提供提他编译方式 也是可以的 ^^ 07/12 19:23
※ 编辑: whatai (60.251.110.174), 07/12/2016 19:24:39
9F:推 Qbsuran: 微软开发者工具, 用cl编译.o後再用link连结成dll 07/12 21:38
10F:→ Qbsuran: 是我会写成bat来编译 07/12 21:40
12F:推 eye5002003: 用CMake管理VS专案就好啦 07/14 21:37
13F:推 eye5002003: 而且VS专案可以只用命令列来编译,并非一定要开专案档 07/14 21:58
14F:→ whatai: 其实我连专案都不想设 XDDDD, 楼上几位的推文我在研究看看 07/15 12:52
15F:→ enonrick: 错误是指找不到mangling 的function,我猜mingw 出来的 07/15 16:59
16F:→ enonrick: function 没有mangling ,用 nm 去找看看到 HelloWorld 07/15 16:59
17F:→ enonrick: 的function name ,说不定在VS中function import 前加 07/15 17:00
18F:→ enonrick: extern "C" 就好了 07/15 17:00
19F:→ enonrick: 或者两边的 call convension 都要指定,mingw 用 g++ 不 07/15 17:15
20F:→ enonrick: 是 gcc 07/15 17:16