在我创建的项目中,我获得了“IGEL1.OBJ”和“IGEL2.OBJ”以及“IGEL.H”。
在Orwell Dev-C ++中,我采取以下步骤:
- '文件' - >'新' - >'项目...'
- 注册'基本' - >'控制台应用' - >'C项目'
- '名称:' - > IgelTest-> 'OK'
。 醇>
然后在“项目”登记册下
- 右键点击'IgelTest'
- '添加到项目'
醇>
添加
- IGEL1.OBJ
- IGEL2.OBJ
- IGEL.H
一旦我完成了这件事,我就去了
- '项目'
- '项目选项'
- 注册'文件'
- 左键点击'IGEL1.OBJ'
- 选中“文件”下的“包含在链接中”
- 对'IGEL2.OBJ'重复相同的内容
- 左键单击“确定”
醇>
现在我的视图中有'main.c',点击'Compile&运行'按钮,并收到以下错误消息: mingw32-make.exe: * 没有规则来制作'IgelTest.exe'所需的目标'IGEL1.o'。停止。
我在这里上传了项目文件夹: https://mega.co.nz/#F!ggpWEJIK!bHu30zK8y4UXU-LoAdcddQ
这是'Makefile.win'的pastebin: http://pastebin.com/Pr9iS3Wc
答案 0 :(得分:0)
如果你查看Makefile.win
,你会发现它认为目标文件是
链接是:
LINKOBJ = main.o IGEL1.o IGEL2.o
并且确实没有制定IGEL1.o
,IGEL2.o
的规则。你的目标文件
<{1}}和IGEL1.OBJ
根本没有被提及。
对于您正在使用的编译器 - GCC for Windows - 目标文件通常具有扩展名IGEL2.OBJ
,而不是.o
。
如果将任何文件 name.extension 添加到Dev-C ++项目并检查包含在链接中,那么如果Dev-C ++无法识别 .extension 作为可以链接的文件的扩展,它认为该文件是某种源文件,并且您想链接目标文件 name.o 是从它编译的。
这就是您的.obj
文件所发生的情况。 makefile不包含制作规则
.obj
,IGEL1.o
因为IDE无法从IGEL2.o
文件中生成.o
文件。
要解决此问题,请重命名扩展名为.obj
的{{1}}个文件。然后是联系
可以工作。但是,如果您的预编译.obj
文件是32位格式且您的Dev-C ++版本是使用TDM GCC 64的版本,那么它仍然不会工作位工具链。然后你会得到一种不同类型的链接错误,为了解决这个问题,你需要从源代码中将.o
文件重新编译为64位.obj
文件。