在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++会报错,说无法识别。。。 展开
(原来打错了,是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++会报错,说无法识别。。。 展开
展开全部
没啥具体要求的话,直接往上堆就行了
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 其实就是便于组织编译命令,实际使用的编译命令还是需要自己写的
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 其实就是便于组织编译命令,实际使用的编译命令还是需要自己写的
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询