[英]CodeBlocks not building my project
每次我單擊 CodeBlocks for Mac OSX 中的“運行”或“構建並運行”選項時,我都會收到以下對話框:
我檢查了項目 > 屬性 > 構建目標,這是一些論壇帖子說我應該做的,並且檢查了所有文件,但我一直收到相同的彈出窗口。
這是我的構建日志:
-------------- 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
這些是我的構建消息:
這些是文件,雖然我不確定內容是否與問題有關(我確保在創建 header 和 function 定義時檢查了調試和發布):
主文件
#include <iostream>
#include "arrays.h"
int main()
{
using namespace std;
PrintArray(anMyArray);
return 0;
}
arrays.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
。 當它包含在兩個翻譯單元中時,它被定義了兩次,給出了duplicate symbol
錯誤。
只需在頭文件中聲明它
extern int anMyArray[9];
並在一個(只有一個)源文件中定義它。
你在頭文件中聲明了一個anMyArray
,然后將它包含在你的兩個cpp文件中,這意味着你的變量由於頭擴展而被聲明兩次。
將其移動到main.cpp文件。
我通過設置->編譯器...->工具鏈可執行文件下面的方式解決了這個問題,然后單擊“自動檢測”按鈕單擊“確定”問題解決了
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.