簡體   English   中英

CodeBlocks 沒有構建我的項目

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM