社区
C++ 语言
帖子详情
请问mingw如何调用vc的lib、dll
code_hello
2011-03-20 03:54:39
RT
mingw想用skinsharp,请问该怎么办?
...全文
899
5
打赏
收藏
请问mingw如何调用vc的lib、dll
RT mingw想用skinsharp,请问该怎么办?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
heqinlong
2011-10-17
打赏
举报
回复
烦人啊。。dll还好办,但是静态链接库的话,MINGW 和VC弄出来的还不一样
Erorr
2011-04-03
打赏
举报
回复
mingw是模拟linux的,不能和vc里面的.dll,.lib混用,要用.a和.so
pengzhixi
2011-04-02
打赏
举报
回复
C++没有统一ABI所以这方面是一个缺陷吧
code_hello
2011-04-02
打赏
举报
回复
[Quote=引用 1 楼 xunxun1982 的回复:]
如果这个dll是C语言编写的可以调用,C++的就不用想了(因为会生成长长的前缀,gcc和vc处理不一样),没办法。
对于lib,什么语言写的用gcc调用都麻烦。
[/Quote]
哦
xunxun
2011-03-20
打赏
举报
回复
如果这个dll是C语言编写的可以调用,C++的就不用想了(因为会生成长长的前缀,gcc和vc处理不一样),没办法。
对于lib,什么语言写的用gcc调用都麻烦。
MingW
VC
之.a .
lib
.
dll
.def 关系
MS
VC
vs.
MinGW
之 (
lib
,
dll
,def,obj,exe) vs (a,
dll
,def,o,exe) 玩转攻略手记 一份粗糙的研究记录,有待补完和整理。
MinGW
: c -> o gcc -c a.c c -> exe gcc a.c
lib
s.o -o a.exe (从主程序a.c,附加
lib
s,生成a.exe) o -> exe gcc a.o b.o ... -o main.exe c ->
dll
,def,a gcc a.c -shared -o a.
dll
-Wl,--output-def,a.def,--out-imp
lib
,
lib
a.a a ->
dll
a2
dll
lib
a.a
dll
-> a:
dll
tool --
dll
name a.
dll
--def a.def --output-
lib
lib
a.a (需要def文件) a -> def: dumpbin /exports
lib
.a >
lib
.def (在windows上
调用
,def需要修改)
dll
-> def : pexports a.
dll
-o > a.def (这里的-o是指给函数标序号)
lib
-> def : reimp -d a.
lib
lib
-> a: (for __cdecl functions in most case) reimp a.
lib
; (for __stdcall functions) MS
VC
: c ->
lib
cl /LD a.c (注意已经定义了export列表) c ->
dll
cl /LD a.c c -> obj cl /c a.c c -> exe cl a.c /out:a.exe
dll
->
lib
lib
/machine:ix86 /def:a.def /out:a.
lib
(需要def文件) obj ->
lib
lib
a.obj b.obj... /out:my
lib
.
lib
dll
->def DUMPBIN a.
dll
/EXPORTS /OUT:a.def (生成的def需要做修正)
lib
->def reimp -d a.
lib
(这个要在MSYS+
MinGW
下用) 关于这些工具的适用范围可以很容易的理解和记忆。
dll
和exe都是PE文件,所以可以使用pexports.
lib
和a是静态库文件,都是归档类型,不是PE格式。所以不能使用pexports.
dll
可以使用
dll
tool.
lib
可以使用
lib
, 和reimp(
lib
->a工具) 所有的bin文件,包括
dll
,exe,
lib
,a都可以使用dumpbin. 参考: http://hi.baidu.com/kaien_space/blog/item/5e77fafa2ba9ff16a8d3110a.html
Mingw
官网文档: http://www.
mingw
.org/wiki/MS
VC
_and_
MinGW
_
DLL
s http://oldwiki.
mingw
.org/index.php/CreateImport
Lib
raries http://www.
mingw
.org/wiki/FAQ http://hi.baidu.com/opaquefog/blog/item/9b21b6deb324e25dccbf1ab7.html http://qzone.qq.com/blog/8330936-1238659272 http://hi.baidu.com/jzinfo/blog/item/b0aa1d308de99f9da8018e00.html 本篇测试用代码: 1. main.cpp #include #include #include "my
lib
.h" using namespace std; int main() { char str[]="Hello world!"; printhello(str); return 0; } 2. my
lib
.cpp #include #include #include "my
lib
.h" using namespace std; void EXPORT printhello(char *str) { cout << str << endl; } 3. my
lib
.h #define EXPORT __declspec(
vc
调用
动态库
dll
和
lib
由于我们经常要
调用
一些第三方厂商或其他编译器编写的动态链接库,但是一般都不提供源文件或.
lib
文件,而作为
VC
隐式链接到
DLL
(implicitlylinktothe
DLL
)
调用
,这些却是必需的。本文将主要讨论在没有源文件及.
lib
输入库文件或欲
调用
Windows未公开函数的情况下重建.
Lib
文件的方法。在建立之前,我们首先要了解一下
DLL
输出函数的几种方式。
so2
lib
实用工具(把cygwin生成的so或
dll
转换成
vc
可
调用
的
lib
)
// so2
lib
.cpp : create a
lib
export table for
vc
by
dll
/so. // 1.2 by philsong@techtrex.com // modify base at a project "CodeProject Create your Proxy
DLL
s automatically", // reference 《为无
LIB
的
DLL
制作
LIB
函数符号输入库 -
VC
知识库文章》 // and resolve the problem of article 《
MinGW
编译的
DLL
在
VC
中使用的问题》
hello_
mingw
_ms
vc
_
dll
用
mingw
编译
VC
所需的
dll
,
lib
例子程序
dll
导出
lib
工具
C99没法在
VC
下直接编译,利用
mingw
+msys先生成
dll
,然后
dll
导出
lib
如果不会用,请看http://blog.sina.com.cn/u/1964716381
C++ 语言
64,282
社区成员
250,470
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章