gcc g++ 怎样调用vc的 .lib库文件

bruninfo 2002-09-04 09:27:14
gcc g++ 的库文件是以.a形式提供的.vc的库文件是以.lib形式提供的。
现想在gcc g++ 中调用.vc的库文件,有什么方法。
...全文
1643 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
bruninfo 2002-09-05
  • 打赏
  • 举报
回复
谢谢大家
Plotto 2002-09-04
  • 打赏
  • 举报
回复
My god!
bruninfo 2002-09-04
  • 打赏
  • 举报
回复
stidio_zhougang(回头是岸) :
按照你的说法,这样理解可以吗?
1.gcc的.a文件的格式和vc的.lib文件的格式是一样的。
2.联接时如果将库目录指向vc的lib目录,并用-l选项,也能通过。

我过会儿做个试验。
另:由于这段时间正做这方面的工作,gcc方面的问题可能很多,还望多帮助 。
stidio_zhougang 2002-09-04
  • 打赏
  • 举报
回复
首先将你的test.lib(假如是这个名字),然后将它改为libtest.a,然后把它拷贝到MINGW下的lib目录下,或者放在你的源文件目录下,编译时,加上这个选项 -ltest 。明白了吗?
如果还有什么不明白的地方给我发email:stidio@163.com
stidio_zhougang 2002-09-04
  • 打赏
  • 举报
回复
哈哈,总算让我给搞出来了!
我又查了一些资料,但上面都没有讲这个问题,我想Microsoft提供给人家的API库都是以LIB形式存在的,因此不可能存在着源代码再编译,因此我想了一个变通的方法———
将MINGW下的lib/winapi/libuser32.a libkernel32.a libgdi32.a这三个文件删除,然后搜索VC 中的user32.lib kernel32.lib gid32.lib三个文件改成上面三个我删除的文件,编译了一个实现多线程图形显示的WIN32工程(《深入浅出MFC》中的第一章的一个例子),编译成功,运行成功,一切OK了,说到这里,我想你应该明白我的意思了吧?
stidio_zhougang 2002-09-04
  • 打赏
  • 举报
回复
你怎么老问这个问题,不是给你说了吗?
他支持WIN32 API,用LoadLibrary载入就可以了。
不过我想你的意思可能是说能不能象VC中一样在链接器中加入一个LIB,我从来没有这样在GCC中做过。
bruninfo 2002-09-04
  • 打赏
  • 举报
回复
我是用win + mingw
================================================================

CSDN 论坛助手 Ver 1.0 B0402提供下载。 改进了很多,功能完备!

★ 浏览帖子速度极快![建议系统使用ie5.5以上]。 ★ 多种帖子实现界面。
★ 保存帖子到本地[html格式]★ 监视您关注帖子的回复更新。
★ 可以直接发贴、回复帖子★ 采用XML接口,可以一次性显示4页帖子,同时支持自定义每次显示帖子数量。可以浏览历史记录!
★ 支持在线检测程序升级情况,可及时获得程序更新的信息。

★★ 签名 ●
可以在您的每个帖子的后面自动加上一个自己设计的签名哟。

Http://www.ChinaOK.net/csdn/csdn.zip
Http://www.ChinaOK.net/csdn/csdn.rar
Http://www.ChinaOK.net/csdn/csdn.exe [自解压]

blh 2002-09-04
  • 打赏
  • 举报
回复
我不知道你用的是什么系统平台,但从你的题目中好像是linux,既然你用linux干嘛要用vc的库,高校
stidio_zhougang 2002-09-04
  • 打赏
  • 举报
回复
TO:bruninfo(景得)
CSDN上所有以我为兄弟者,都是我的兄弟,No Problem!
coolgarfield 2002-09-04
  • 打赏
  • 举报
回复
关注!!!
MSVC 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 libs.o -o a.exe (从主程序a.c,附加libs,生成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-implib,liba.a a -> dll a2dll liba.a dll -> a: dlltool --dllname a.dll --def a.def --output-lib liba.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) MSVC: 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:mylib.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可以使用dlltool. 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/MSVC_and_MinGW_DLLs http://oldwiki.mingw.org/index.php/CreateImportLibraries 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 "mylib.h" using namespace std; int main() { char str[]="Hello world!"; printhello(str); return 0; } 2. mylib.cpp #include #include #include "mylib.h" using namespace std; void EXPORT printhello(char *str) { cout << str << endl; } 3. mylib.h #define EXPORT __declspec(

69,393

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧