gpt4 book ai didi

c++ - CodeBlocks 没有构建我的项目

转载 作者:行者123 更新时间:2023-11-28 02:54:23 24 4
gpt4 key购买 nike

每次我在 Mac OSX 的 CodeBlocks 中单击“运行”或“构建并运行”选项时,我都会收到以下对话框:

enter image description here

我检查了 Project > Properties > Build targets,这是一些论坛帖子说我应该做的,并且检查了所有文件,但我总是收到相同的弹出窗口。

这是我的构建日志:

-------------- Build: Release in printarray (compiler: GNU GCC Compiler)---------------

g++ -o bin/Release/printarray obj/Release/arrays.o obj/Release/main.o -s
ld: warning: option -s is obsolete and being ignored
ld: duplicate symbol _anMyArray in obj/Release/main.o and obj/Release/arrays.o for architecture x86_64
collect2: ld returned 1 exit status


这些是我的构建信息:

enter image description here


这些是文件,但我不确定内容是否与问题有关(我确保在创建 header 和函数定义时检查了 Debug 和 Release):

main.cpp

#include <iostream>
#include "arrays.h"

int main()
{
using namespace std;

PrintArray(anMyArray);

return 0;
}


数组.cpp

#include <iostream>
#include "arrays.h"

void PrintArray(int anArray[])
{
using namespace std;

int nElements = sizeof(anArray) / sizeof(anArray[0]);
for (int nIndex=0; nIndex < nElements; nIndex++)
cout << anArray[nIndex] << endl;
}


arrays.h

#ifndef ARRAYS_H
#define ARRAYS_H

int anMyArray[9] = { 4, 6, 7, 3, 8, 2, 1, 9, 5 };

void PrintArray(int anArray[]);

#endif // ARRAYS_H

有什么帮助吗?

最佳答案

这是因为你在头文件中定义变量anArray。当它包含在两个 translation units 中时它被定义了两次,给你 duplicate symbol 错误。

只需在头文件中声明即可

extern int anMyArray[9];

并在一个(而且只有一个)源文件中定义它。

关于c++ - CodeBlocks 没有构建我的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22331400/

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