[问题] 如何使用minGW编译DLL (with def档)

楼主: whatai (多多)   2016-07-12 18:21:03
开发平台(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
[email protected]/*
作者: uranusjr (←這人是超級笨蛋)   2016-07-12 19:08:00
这看起来是 C++?如果是的话本来就不能混用, 出错是正常其实即使是 C 也没有保证相容性, 只是实务上有机会可以连 VS 各版本之间都不能保证相容了
楼主: whatai (多多)   2016-07-12 19:20:00
C++的话 应该可以用extern C 来解决, 另外真正要编译的code 已经可以各自在linux/windows上编译, 但想用mingw来编译, 如此可以省去一大堆的专案精灵设定 以及打开专案才能编译的功, 并且可以沿用(或小修改)makefile来达成功效或是有大大可以提供提他编译方式 也是可以的 ^^
作者: Qbsuran (Qbsuran)   2016-07-12 21:38:00
微软开发者工具, 用cl编译.o后再用link连结成dll是我会写成bat来编译
作者: enthos (影斯作业系统)   2016-07-13 16:43:00
作者: eye5002003 (下一夜)   2016-07-14 21:37:00
用CMake管理VS专案就好啦而且VS专案可以只用命令列来编译,并非一定要开专案档
楼主: whatai (多多)   2016-07-15 12:52:00
其实我连专案都不想设 XDDDD, 楼上几位的推文我在研究看看
作者: enonrick (EnonRick)   2016-07-15 16:59:00
错误是指找不到mangling 的function,我猜mingw 出来的function 没有mangling ,用 nm 去找看看到 HelloWorld的function name ,说不定在VS中function import 前加extern "C" 就好了或者两边的 call convension 都要指定,mingw 用 g++ 不是 gcc
继续阅读

Links booklink

Contact Us: admin [ a t ] ucptt.com