在windows下如何通过命令行完成C++工程的编译、链接、生成,如果需要链接系统自带的动态链接库怎么办?

工程里有很多文件,有头文件源文件和资源文件。关键是要链接系统自带的动态链接库。最好有实例啊。。。(原来打错了,是dll的库)我要链接一个msimg32.dll的系统库,以... 工程里有很多文件,有头文件源文件和资源文件。关键是要链接系统自带的动态链接库。最好有实例啊。。。
(原来打错了,是dll的库)我要链接一个msimg32.dll的系统库,以调用win32 API 函数TransparentBlt(),尝试用了g++ msimg32.dll a.cpp a.h b.cpp b.h .... -o hello.exe,
编译时会报错,说msimg32.dll找不到,接着就会有TransparentBlt()未声明的错误。
我上网查了,似乎要用-L ,-l 的命令来链接,但还是没研究出来,这代码具体该怎么写?
如果要用make命令处理复杂工程是不是容易点?那makefile文件该怎么写?
另:如果要加资源进去,怎么写命令?似乎把xxx.rc 加进去g++会报错,说无法识别。。。
展开
 我来答
fox000002
2011-01-30 · TA获得超过3827个赞
知道大有可为答主
回答量:2356
采纳率:97%
帮助的人:1181万
展开全部
没啥具体要求的话,直接往上堆就行了

cl hello.cpp yourlib.lib

需要更多的控制,查看 cl /? 吧,也可以查 MSDN

===
其他编译器也类似,简单情况可以直接堆文件名

====

library 文件不在默认的搜索路径里的话,一般有两种方法解决:

1 gcc 的话,使用 -L/path/to/lib

2 直接用全路径来写,编译命令上加 /path/to/lib/file

比如

gcc -o hello.exe hello.c C:\xxx\msimg32.lib

另:.h 文件不应该出现在编译命令里,编译单元是按一个源码文件 .c/.cpp 来算的

===========================
隐式链接DLL,链接时使用的是对应的 implib,一般也是以 .lib 文件存在

而 GCC(MinGW) 的话,扩展名为 .a

msimg32 的话,/MinGW/lib 已经有 libmsimg32.a 文件,可以直接加 -lmsimg32 选项来链接

=======

至于资源文件的话,MinGW 中用的编译器是 windres.exe

命令为:windres -i xx.rc -o xx.res -O coff

然后链接成 exe 时加上 xx.res 文件名

=====================

makefile 其实就是便于组织编译命令,实际使用的编译命令还是需要自己写的
百度网友5c2136c
2011-01-30 · 超过28用户采纳过TA的回答
知道小有建树答主
回答量:297
采纳率:0%
帮助的人:133万
展开全部
查看编译器的帮助吧,大多编译器都支持命令行的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式