Dev-Cpp/Mingw32 环境介绍(4)

导读:
   Dev-Cpp/Mingw32 环境介绍(4)
   上文回顾:
  上文《Dev-Cpp/Mingw32 环境介绍(3)》向各位介绍了有关使用GDB调试程序的简单方法。本文我们将会看看Mingw32如何来使用静态连接库。虽然本文出炉的时间的确是有些慢了点。不过我想各位应该能够理解的。
   第七章 在你的程序中使用静态连接库
  在Windows中也许各位都会熟悉以obj和lib结尾的文件。这些文件就是Win32下的二进制文件和静态连接库。但是在Mingw32下有些特殊,我原来在第一章介绍过的。他们是o和a。很奇怪吧。不过我们这里只要知道如何使用就可以了。关于更多的不在本文的范围内。
  我们先以VC为例,各位知道在VC中使用静态库,要在连接程序的时候选择导入的静态库。参数为静态库的全名。比如winmm.lib但是在Mingw32下有些不同。你所使用的参数为 -lwinmm这个就可以了。而-lwinmm的意思是导入静态链接库libwinmm.a。是不是有些想不通?下面我们来介绍一下在Dev中的使用和意义。
  首先我们启动Dev,新建一个工程。然后选择工程->工程属性。(如果你使用New Look图标,那么工程属性就是一个盾型图标。)然后,选择参数选项卡。在连接器的文本框中输入你要的参数,如-lwinmm。至于分割符,可以使用空格,也可以使用回车。不过我个人推荐回车。如果顺利,你的界面看起来会像下图。
  
  
  当然你如果要使用*.lib可以,只要将文件名直接填入就可以了。就像 winmm.lib。当然如果用绝对路径也可以。
  下面我们来看看静态连接库的格式。当然,我们不是从文件格式去分析,而是从调用格式看。通常静态库的文件名为 lib*.a其中*表示的就是任何字符。而在我们调用的时候,不需要将所有的文件名都用上,只需要使用*的内容就可以了。就像调用libwinmm.a的静态库我们只需要在连接的时候加参数 -lwinmm就可以了。前面的lib和后面的.a都不需要了。如果,还不太明白。可以看看dev安装目录中的lib目录。里面有很多win32下的静态连接库。自己分析一下文件名和调用方法就会很清楚了。
  最后我们实战一下静态连接库的使用。
  写什么好呢?写一个控制台上的音乐播放器吧。当然只是简单的播放音乐而已,而且路径不支持中文。这里只是为了熟悉一下静态库的使用。
  新建一个控制台工程,然后我们在main.c的代码中写如下代码。
  //main.c
  #include
  #define MAX 255
  int main(int argc, char *argv[])
  {
  if (argc == 2)
  {
  char filename[MAX];
  
  strcpy(filename, "open ");
  
  strcat(filename, argv[1]);
  
  strcat(filename, "alias media");
  
  mciSendString("close media",0,0,0);
  mciSendString(filename,0,0,0);
  mciSendString("play media",0,0,0);
  system("pause");
  }
  else
  {
  printf("play.exe musicfilename");
  }
  return 0;
  }
  //main.c end
  然后我们在工程属性的连接器参数中输入 -lwinmm 好了。开始编译。如果顺利,我们的程序就会编译成功。并且可以播放一些常用的音乐文件。高兴吧。
  好了,这章我们就到这里用这个例子结束了。
   问外音:
  由于本人最近比较忙,所以原来的两章一文改成了一章一文。请原谅。下一章我们将介绍如何建立Mingw32的静态连接库。敬请期待。并且希望各位能够多提意见。因为不论是程序还是细想唯有通过不断的交流才能愈加完善。
  
   STUDIO 软件开发组
  北斗星君(黄庠魁)
  

本文转自
http://blog.csdn.net/visioncat/archive/2004/08/17/76863.aspx
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据您提供的Makefile,这个错误信息是由于在删除目标文件时出现问题引起的。这可能是由于您的Dev-C++环境配置不正确导致的。 在您的Makefile中,您使用了`$(DEL)`变量来执行删除操作。然而,在Windows环境下,删除操作通常使用`del`命令而不是`devcpp.exe INTERNAL_DEL`。 为了解决这个问题,您可以尝试将以下行: ``` DEL = C:\Program Files (x86)\Embarcadero\Dev-Cpp\devcpp.exe INTERNAL_DEL ``` 替换为: ``` DEL = del ``` 这将使用Windows的`del`命令来执行删除操作。 修改后的Makefile如下所示: ```makefile # Project: 项目1 # Makefile created by Embarcadero Dev-C++ 6.3 CPP = g++.exe CC = gcc.exe WINDRES = windres.exe OBJ = main.o LINKOBJ = main.o LIBS = -L"C:/Program Files (x86)/Embarcadero/Dev-Cpp/TDM-GCC-64/lib" -L"C:/Program Files (x86)/Embarcadero/Dev-Cpp/TDM-GCC-64/x86_64-w64-mingw32/lib" -static-libgcc INCS = -I"C:/Program Files (x86)/Embarcadero/Dev-Cpp/TDM-GCC-64/include" -I"C:/Program Files (x86)/Embarcadero/Dev-Cpp/TDM-GCC-64/x86_64-w64-mingw32/include" -I"C:/Program Files (x86)/Embarcadero/Dev-Cpp/TDM-GCC-64/lib/gcc/x86_64-w64-mingw32/9.2.0/include" CXXINCS = -I"C:/Program Files (x86)/Embarcadero/Dev-Cpp/TDM-GCC-64/include" -I"C:/Program Files (x86)/Embarcadero/Dev-Cpp/TDM-GCC-64/x86_64-w64-mingw32/include" -I"C:/Program Files (x86)/Embarcadero/Dev-Cpp/TDM-GCC-64/lib/gcc/x86_64-w64-mingw32/9.2.0/include" -I"C:/Program Files (x86)/Embarcadero/Dev-Cpp/TDM-GCC-64/lib/gcc/x86_64-w64-mingw32/9.2.0/include/c++" BIN = 项目1.exe CXXFLAGS = $(CXXINCS) -std=c++11 CFLAGS = $(INCS) -std=c++11 DEL = del .PHONY: all all-before all-after clean clean-custom all: all-before $(BIN) all-after clean: clean-custom ${DEL} $(OBJ) $(BIN) $(BIN): $(OBJ) $(CPP) $(LINKOBJ) -o $(BIN) $(LIBS) main.o: main.cpp $(CPP) -c main.cpp -o main.o $(CXXFLAGS) ``` 请尝试使用修改后的Makefile重新编译您的项目,看看是否能够解决问题。如果还有其他错误信息,请提供详细的错误信息,以便我更好地帮助您解决问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值