gpt4 book ai didi

c++ - 创建一个简单的 'hello world' 并将其与 2 个预编译对象链接在一起

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:53:59 24 4
gpt4 key购买 nike

在我创建的项目中,我得到了“IGEL1.OBJ”和“IGEL2.OBJ”以及“IGEL.H”。

在 Orwell Dev-C++ 中,我采取以下步骤:

  1. 'File'->'New'->'Project...'
  2. Register 'Basic'->'Console Application'->'C Project'
  3. 'Name:'->IgelTest->'OK'.

然后在'Project'下注册

  1. right-click on 'IgelTest'
  2. 'Add to project'

依次添加

  • IGEL1.OBJ
  • IGEL2.OBJ
  • IGEL.H

一旦我完成了这个,我就去

  1. 'Project'
  2. 'Project Options'
  3. Register 'Files'
  4. left-click on 'IGEL1.OBJ'
  5. check 'Include in linking' under 'Files'
  6. repeat the same for 'IGEL2.OBJ'
  7. left-click 'OK'

现在我的 View 中有“main.c”,单击“编译并运行”按钮,并收到以下错误消息:mingw32-make.exe:* 没有创建目标“IGEL1.o”的规则,“IgelTest.exe”需要。停止。

我已经在此处上传了项目文件夹: https://mega.co.nz/#F!ggpWEJIK!bHu30zK8y4UXU-LoAdcddQ

这是“Makefile.win”的 pastebin: http://pastebin.com/Pr9iS3Wc

最佳答案

如果您查看 Makefile.win,您会发现它认为目标文件是链接是:

LINKOBJ  = main.o IGEL1.o IGEL2.o

而且确实没有制作IGEL1.oIGEL2.o的规则。你的目标文件IGEL1.OBJIGEL2.OBJ 完全没有提到。

对于您使用的编译器 - GCC for Windows - 目标文件通常具有扩展名 .o,而不是 .obj

如果您将任何文件 name.extension 添加到 Dev-C++ 项目并检查它是否包含在链接中,那么如果 Dev-C++ 无法识别 .extension 作为可以链接的文件的扩展名,它认为该文件是某种 文件并且您想链接目标文件 name.o 从它编译而来。

这就是您的 .obj 文件所发生的情况。 makefile 不包含制作规则IGEL1.oIGEL2.o 因为 IDE 不知道如何从 .obj 生成 .o 文件> 文件。

要解决此问题,请将您的 .obj 文件重命名为扩展名 .o。然后联动可能有效。它仍然不会工作,但是,如果您预编译的 .obj 文件是 32 位格式并且您的 Dev-C++ 版本是使用TDM GCC 64 位工具链。然后你会得到一种不同类型的链接错误,要解决这个问题,你需要从源代码中将你的 .obj 文件重新编译为 64 位 .o 文件。

关于c++ - 创建一个简单的 'hello world' 并将其与 2 个预编译对象链接在一起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23148806/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com