1. 程式人生 > >VS 編譯出現 LNK2005 XXX 已經在 XXX.obj 中定義

VS 編譯出現 LNK2005 XXX 已經在 XXX.obj 中定義

    造成該問題的可能性比較多,本人將在今後遇到時新增進來,今天先放出本人遇到的一種情況。

    多重包含含有變數定義的.h檔案所造成

    這個現象很容易重新,首先新建一個1.h檔案,然後在裡面寫下如下程式碼

#pragma once
int i = 0;
    然後新建一個1.cpp,裡面程式碼如下:
#include "1.h"
    再新建一個2.cpp,程式碼如下:
#include "1.h"
void main()
{
}
    按編譯,發現報了LNK2005 "int i" ([email protected]@3HA) 已經在 1.obj 中定義的錯誤,原因在於編譯器編譯1.obj的時候已經定義了"int i",而編譯2.obj的時候又要定義"int i",這就造成了變數的重定義。所以,變數的宣告最好放在.cpp中。

相關推薦

error:LNK2005 _main 已經在 *.obj 定義

出現這個錯誤有如下幾種情況 重複定義全域性變數。可能存在兩種情況 A:這種情況一般存在於建立的工程之中,我用的是vs2015.全域性變數是針對整個工程的。正確的應該是在一個CPP檔案中定義如下:int g;那麼在使用的CPP檔案中就應該使用:ext

VS 編譯出現 LNK2005 XXX 已經XXX.obj 定義

    造成該問題的可能性比較多,本人將在今後遇到時新增進來,今天先放出本人遇到的一種情況。     多重包含含有變數定義的.h檔案所造成     這個現象很容易重新,首先新建一個1.h檔案,然後在裡

關於VS2008編譯錯誤"error LNK2005: 已經在 .obj 定義"

無意中遇到了這樣的編譯問題, 於是google,發現在.h檔案裡定義變數,發生這問題的概率是灰常大的. 下面這段紅字是參考網上的說法: 當你第一個使用這個頭的.cpp檔案生成.obj的時候,int i 在裡面定義了當另外一個使用這個的.cpp再次[單獨]生成.obj的時候,int i 又被定義然後兩個o

error:LNK2005 已經在*.obj定義

實習專案中涉及到靜態庫的編寫,在用例項除錯靜態庫的時候,遇到LNK2005重複定義錯誤:已經在“*.obj”中定義。 上網搜了一下,總結有如下幾種情況: 1、重複定義全域性變數 全域性變數是針對整個工程的,在一個CPP檔案的定義:int nCount;那麼在使用的CPP檔案

error LNK2005:已經XXX.obj 定義/fatal error LNK1120: 1 個無法解析的外部命令

>main.obj : error LNK2005: "void __cdecl Creat_graph(struct graph *)" ([email protected]@[em

VS編譯C#程序時去掉xxx.vhost.exe和xxx.pdb文件

程序 技術分享 ges 一個 mage 技術 高級 db文件 cnblogs 去xxx.vhost.exe   打開項目屬性-->調試--啟用Visual Studio承載進程(右側最後一個選項)前面的勾去掉 去掉xxx.pdb   打開項目屬性-->生成

VS開發】VS編譯時提示"已經在 LIBCMT.lib(new.obj) 定義uafxcw.lib"解決辦法

  錯誤  1  error LNK2005: "void * __cdecl operator new(unsigned int)" ( [email protected]@Z )

2>MSVCRTD.lib(MSVCR100D.dll) : error LNK2005: _calloc 已經在 LIBCMTD.lib(dbgcalloc.obj) 定義

ont cal 鏈接器 使用 size lib rac amp svc 使用VS2010,在FireBreath裏面調用ortp庫和Speex庫。編譯的時候出現錯誤: 2>MSVCRTD.lib(MSVCR100D.dl

[Visual Studio C++] [MFC 除錯錯誤]:error LNK2005: "class std::...已經在 Multimediatimer.obj 定義

1.編譯問題描述: error LNK2005: "class std::basic_ofstream<char,struct std::char_traits<char> > Sim_Data_Write" ([email protected]@[email&

LNK2005:htons已經在Win32_Interop.lib(Win32_FDAPI.obj)定義

今天編譯一個專案,在兩個標頭檔案中都呼叫了 winsock2.h,然後出現如題錯誤, 經過半天查詢及網上資料搜尋,最終通過https://stackoverflow.com/questions/137

1>test.obj : error LNK2005: _main 已經在 main.obj 定義【c的學習之路】

下決心要在空餘時間學習C語言,從今天開始。 遇到的一個小問題,查詢資料結果如下。 造成LNK2005錯誤主要有以下幾種情況: 1.重複定義全域性變數。可能存在兩種情況: A、對於一些初學程式設計的程式設計師,有時候會以為需要使用全域性變數的地方就可

vs編譯出現未載入 wntdll.pdb

  今天在編寫程式的時候在編譯的過程中出現了一個對話方塊提示程式已經出現一個斷點,然後跳轉介面提示未載入 wntdll.pdb,或者說很多vs版本在編譯的時候經常會出現 無法查詢或開啟 PDB 檔案。 “ConsoleApplication1.exe”(Win32): 已載

C++報錯:error LNK2005: _main 已經在 1.obj 定義

C++初學者可能會遇到這樣的報錯:error LNK2005: _main 已經在 1.obj 中定義。 這個報錯的意思是說你的當前工程裡定義了兩個main()主函式,在C++裡是不允許出現兩個入口的,即不能出現兩個main()主函式。 解決方法: 方法1:去掉一個主函

C++已經在 test.obj 定義”的錯誤

在使用模板過程中,容易發生這樣的錯誤。 錯誤原因如下: 1.模板類的申明和實現要在一個檔案裡面。當我們所有實現都是用模板時,我們會知道應該放在一個檔案裡面,不會範錯誤。但如果有的用了模板,而有的沒用模板的時候,這個時候就容易出現問題了。如果把申明放在.h,實現在

已經在 LIBCMTD.lib(dbgdel.obj) 定義 解決

解決方法:編譯工具:VS2008專案--〉屬性--〉配置屬性--〉連結器--〉輸入--〉附加依賴項--〉Nafxcwd.lib;Libcmtd.lib專案--〉屬性--〉配置屬性--〉連結器--〉輸入

解決C++編譯出現的重定義問題:multiple definition of ’XXX‘錯誤

1 //file_NO2:hello.cpp 2 #include<iostream> 3 #include"hello.h" 4 using namespace std;

IDEA編譯報錯“程式包XXX不存在”

pchat-center子模塊要匯入 pchat-user 的jar包 pchat-center的pom檔案如下: pchat-center子模組包依賴了pchat-user子模組包 程式碼如下: 程式碼沒顯示任務異常,沒有標紅顯示。 maven編譯結果

dll 已註冊 檢索 COM 類工廠 CLSID 為 {XXXX-XXXX-XXX-XXXXX-XXX} 的元件時失敗,原因是出現以下錯誤: 80040154。

前幾天碰到的問題,錯誤提示“ 檢索 COM 類工廠中 CLSID 為 {XXXX-XXXX-XXX-XXXXX-XXX} 的元件時失敗,原因是出現以下錯誤: 80040154。”,然而dll已註冊,登錄檔中搜索也能查到這個clsid 最後把引用該dll的專案改為X86的編譯平臺,錯誤就消失了

Mac sublime 安裝包的時候出現 unable to download xxx (_ssl.c:548)

Mac sublime 安裝包的時候出現 unable to download xxx前置條件:【本文行文中,所使用的電腦環境為 mac】(當然不排除,在其他系統下,依然可以採用這種解決方案) 今天想在 sublime 上安裝一個 DocBlockr 的包。走正常的安裝流程,選中 DocBlockr 後,回

arm開發板執行應用程式出現:-/bin/sh:xxx:not found 解決辦法

百度可知是因為缺少動態庫,在PC 執行arm-linux-readlf  xxx(應用程式)   列印結果如下: ELF Header:   Magic:   7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00   Class: