簡體   English   中英

C++ 對 WinMain@16 的未定義引用(代碼::塊)

[英]C++ undefined reference to WinMain@16 (Code::Blocks)

我正在使用 Code::Blocks 學習 C++,每次我嘗試創建一個新類時,都會收到一條錯誤消息:

undefined reference to `WinMain@16'

這是我一直在使用的代碼:

主類

#include "Lime.h"
#include <iostream>
using namespace std;
int main()
{
    Lime lime;
    return 0;
}

石灰類(.ccp):

#include "Lime.h"
#include <iostream>
using namespace std;
Lime::Lime()
{
    cout<<"Hi!";
}

石灰標題 (.h):

#ifndef LIME_H
#define LIME_H
class Lime
{
    public:
        Lime();
};
#endif

如果有人知道,如何解決它,請告訴我!

我在使用完全相同的教程時遇到了完全相同的問題。

如何解決這個問題? 我發現重新啟動 CodeBlocks 可以消除此錯誤。 它與您創建文件的方式或任何語法無關。 重新啟動可以解決問題。

為什么會出現這種情況? 如果我不得不胡亂猜測,我會認為 CodeBlocks 確實創建了頭文件/cpp 文件,但是它並沒有以適當的方式將它們鏈接到您的項目以使其可用(盡管它確實要求您將它們鏈接到創建它們后的項目)。 這是一個猜測。

我知道有些人對此發表了評論,說您正在創建 Windows GUI 控制台應用程序而不是控制台應用程序,但事實並非如此。 我也在創建一個簡單的控制台應用程序,正如 Bucky 在視頻中所解釋的那樣。

試試這個: Settings -> Compiler ,單擊選項卡Build options ,選中復選框

將當前編譯文件的目錄顯式添加到編譯器搜索目錄

聚苯乙烯

下次創建新類時,請確保在“ File policy部分中選中復選框

  • 添加項目路徑

  • 頭文件和實現文件應該在同一個文件夾中

但是,不要選擇

使用相對路徑

轉到"Project" --> "Build Options . . ." 在菜單欄上
轉到"Linker Settings"選項卡
"Link libraries"面板中,單擊"Add"
在即將到來的字段中寫下: mingw32;libSDL.a;libSDLmain.a
轉到"Search directories" --> "Linker"選項卡
在那里添加您的 MinGW 庫文件夾! 祝你好運!!

看起來您正在構建 Windows 應用程序,而不是控制台應用程序。 因此,您需要一個WinMain函數作為程序入口點而不是main

我對 CodeBlocks 不是很熟悉,但是在項目設置的某個地方會有一個設置,讓你指定你的程序正在運行的子系統。它可能是“Windows”,其中一個選項應該是“控制台”,所以如果你真的想要一個控制台應用程序,你可以改變它。 從您使用cout的事實來看,我懷疑控制台應用程序正是您想要的。 如果是,那么您可以將main作為您的入口點。

您還可以在創建新項目時選擇控制台應用程序。 此屏幕截圖和文字應該會有所幫助。

注意:我剛剛檢查了更多,在Project/target option您可以轉到“構建目標”選項卡並查看您正在構建的子系統。 它在選項卡上稱為“類型”,下拉選項之一將是“控制台應用程序”。

這個問題出現在我看來是因為“main.cpp”沒有包含在項目中。 如果您再次看到該錯誤,只需確保您的項目中包含所有文件。

我已經通過打開編譯器設置對話框並單擊“確定”解決了這個問題。 沒有改變。 它真的有效!

但是如果你再次添加一個新的類,這個問題就會重復。 因此,每次創建新類時只需打開/關閉設置對話框。

它非常簡單並且對我有用......你所要做的就是選擇“打開現有項目”,一旦你打開代碼塊,它就會出現在開始選項卡中,然后你選擇(你的項目名稱).cbp文件......程序將打開你的項目以及類名 .h 和 .cpp 文件......你構建並運行......你的代碼將正常工作......

我之前也遇到過這些問題,我的解決方案是如果您有很多包含頭文件的文件,則創建一個項目。 通過這種方式,當您編寫#include "Burrito.h" 時,編輯器將在您的項目中查找頭文件。特別是對於 Dev-cpp 編輯器。

我也剛遇到這個問題! 問題是我把我的主函數放在一個特定的命名空間下,而我的類不是這個命名空間的一部分,看起來我沒有“主”給它們。 一旦我刪除了命名空間/將類添加到同一個命名空間,構建問題就消失了。

試試這個:設置->編譯器,單擊選項卡構建選項,選中復選框

將當前編譯文件的目錄顯式添加到編譯器搜索目錄

我做了這個,我現在工作完美

修復:代碼塊中對“WinMain@16”的未定義引用或對“class-name::class-name()”的未定義引用 CodeBlocks 中的錯誤

我有同樣的問題。 實際上,它很容易修復。 菜單欄上轉到

項目-->構建選項勾選Have g++ follow the C++11 ISO C++ 語言標准 [-std=c++11]
然后單擊確定並構建並運行您的項目[F9] 單擊此處查看屏幕截圖。 單獨的類文件代碼塊修復

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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