關(guān)于VS2019 C++項(xiàng)目同時(shí)出現(xiàn)LNK2005 和LNK1169 error 的解決辦法
同時(shí)出現(xiàn)LNK2005 和LNK1169 error 的解決辦法 項(xiàng)目場(chǎng)景:Visual Studio C++項(xiàng)目問(wèn)題描述原因分析cpp引用cpp導(dǎo)致報(bào)錯(cuò) 解決方案方案1:如果是簡(jiǎn)單的項(xiàng)目,可以先移除被引用的cpp文件,在解決方案管理器中新建頭文件,將被移除的cpp文件內(nèi)容拷貝進(jìn)來(lái),效果如下。方案2:正規(guī)措施是:給被引用的cpp文件創(chuàng)建單獨(dú)的頭文件,再將此頭文件引入到需要的文件中,效果如下: 問(wèn)題總結(jié)
項(xiàng)目場(chǎng)景:Visual Studio C++項(xiàng)目
Visual Studio 的C++ 項(xiàng)目中,在main.cpp中引入LinkStack.cpp時(shí)會(huì)出現(xiàn)以下報(bào)錯(cuò):
問(wèn)題描述
嚴(yán)重性 代碼 說(shuō)明 項(xiàng)目 文件 行 禁止顯示狀態(tài)
錯(cuò)誤 LNK1169 找到一個(gè)或多個(gè)多重定義的符號(hào) queue2 F:\Cplusplus\queue2\Debug\queue2.exe 1
警告 C6011 取消對(duì) NULL 指針“p”的引用。 queue2 F:\Cplusplus\queue2\LinkStack.cpp 33
錯(cuò)誤 LNK2005 “void __cdecl DestroyStack(struct node * &)” (?DestroyStack@@YAXAAPAUnode@@@Z) 已經(jīng)在 LinkStack.obj 中定義 queue2 F:\Cplusplus\queue2\main.obj 1
錯(cuò)誤 LNK2005 “int __cdecl GetTop(struct node *,char &)” (?GetTop@@YAHPAUnode@@AAD@Z) 已經(jīng)在 LinkStack.obj 中定義 queue2 F:\Cplusplus\queue2\main.obj 1
錯(cuò)誤 LNK2005 “void __cdecl InitStack(struct node * &)” (?InitStack@@YAXAAPAUnode@@@Z) 已經(jīng)在 LinkStack.obj 中定義 queue2 F:\Cplusplus\queue2\main.obj 1
錯(cuò)誤 LNK2005 “int __cdecl Pop(struct node * &,char &)” (?Pop@@YAHAAPAUnode@@AAD@Z) 已經(jīng)在 LinkStack.obj 中定義 queue2 F:\Cplusplus\queue2\main.obj 1
錯(cuò)誤 LNK2005 “int __cdecl Push(struct node * &,char)” (?Push@@YAHAAPAUnode@@D@Z) 已經(jīng)在 LinkStack.obj 中定義 queue2 F:\Cplusplus\queue2\main.obj 1
錯(cuò)誤 LNK2005 “int __cdecl StackEmpty(struct node *)” (?StackEmpty@@YAHPAUnode@@@Z) 已經(jīng)在 LinkStack.obj 中定義 queue2 F:\Cplusplus\queue2\main.obj 1
原因分析
cpp引用cpp導(dǎo)致報(bào)錯(cuò)
在這個(gè)Visual Studio項(xiàng)目中,main.cpp通過(guò)#include <LinkStack.cpp>直接引用另一個(gè)cpp文件,導(dǎo)致出現(xiàn)上述報(bào)錯(cuò)。但是在Visual Studio中不能夠在一個(gè)cpp文件中引用另一個(gè)cpp文件,因?yàn)樵赩isual Studio中的每個(gè)cpp源文件在沒(méi)有被main.cpp引用時(shí)也都會(huì)被編譯為obj文件,所以在被直接#include引入cpp文件時(shí)會(huì)被報(bào)出已定義的錯(cuò)誤。
解決方案
方案1:如果是簡(jiǎn)單的項(xiàng)目,可以先移除被引用的cpp文件,在解決方案管理器中新建頭文件,將被移除的cpp文件內(nèi)容拷貝進(jìn)來(lái),效果如下。
方案2:正規(guī)措施是:給被引用的cpp文件創(chuàng)建單獨(dú)的頭文件,再將此頭文件引入到需要的文件中,效果如下:
問(wèn)題總結(jié)
Visual Studio中因?yàn)槊總€(gè)源文件都必定會(huì)被編譯一遍,因此不能在一個(gè)源文件中直接引用另一個(gè)源文件,只能以頭文件的形式進(jìn)行引用。
到此這篇關(guān)于關(guān)于VS2019 C++項(xiàng)目同時(shí)出現(xiàn)LNK2005 和LNK1169 error 的解決辦法的文章就介紹到這了,更多相關(guān)VS2019 C++項(xiàng)目?jī)?nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- c++?error:crosses?initialization?of問(wèn)題解決分析
- 解決c++?error:crosses?initialization?of?問(wèn)題
- 詳解C/C++ Linux出錯(cuò)處理函數(shù)(strerror與perror)的使用
- 解決啟動(dòng)MongoDB錯(cuò)誤:error while loading shared libraries: libstdc++.so.6:cannot open shared object file:
- 解決VC++編譯報(bào)錯(cuò)error C2248的方案
- c++ mk文件出錯(cuò)Jni調(diào)用產(chǎn)生java.lang.UnsatisfiedLinkError錯(cuò)誤解決方法
- c/c++?Error:?redefinition?of?'xxx'的問(wèn)題及解決方法
相關(guān)文章
C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單的五子棋游戲
這篇文章主要為大家詳細(xì)介紹了c語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單的五子棋游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-01-01VS2022實(shí)現(xiàn)VC++打包生成安裝文件圖文詳細(xì)歷程
本文主要介紹了VS2022實(shí)現(xiàn)VC++打包生成安裝文件圖文詳細(xì)歷程,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-02-02C++中strcpy函數(shù)的實(shí)現(xiàn)
strncpy這個(gè)可以指定拷貝字符的長(zhǎng)度,指定源地址,目標(biāo)地址,還有需要拷貝的字符的長(zhǎng)度; strcpy只能傳入兩個(gè)參數(shù),只指定拷貝的起始地址跟目標(biāo)地址,然后整體拷貝;2015-10-10詳解c++ atomic原子編程中的Memory Order
在多核編程中,我們使用內(nèi)核對(duì)象【如:事件對(duì)象(Event)、互斥量對(duì)象(Mutex,或互斥體對(duì)象)、信號(hào)量對(duì)象(Semaphore)等】來(lái)避免多個(gè)線程修改同一個(gè)數(shù)據(jù)時(shí)產(chǎn)生的競(jìng)爭(zhēng)條件。本文將詳細(xì)介紹c++ atomic原子編程中的Memory Order。2021-06-06C語(yǔ)言使用scanf連續(xù)輸入字符串出現(xiàn)的問(wèn)題
這篇文章主要介紹了C語(yǔ)言使用scanf連續(xù)輸入字符串出現(xiàn)的問(wèn)題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-12-12c實(shí)現(xiàn)linux下的數(shù)據(jù)庫(kù)備份
本文給大家簡(jiǎn)單介紹下c實(shí)現(xiàn)linux下的數(shù)據(jù)庫(kù)備份的方法和具體的源碼,十分的實(shí)用,有需要的小伙伴可以參考下。2015-07-07C++中AVL樹(shù)的底層以及實(shí)現(xiàn)方法總結(jié)
這篇文章主要介紹了C++中AVL樹(shù)的底層以及實(shí)現(xiàn)方法的相關(guān)資料,AVL樹(shù)是一種自平衡的二叉搜索樹(shù),每個(gè)節(jié)點(diǎn)的左右子樹(shù)高度差不超過(guò)1,通過(guò)旋轉(zhuǎn)操作保持平衡,詳解了AVL樹(shù)的結(jié)構(gòu)、插入、旋轉(zhuǎn)、查找和遍歷方法,展示了其保持平衡的機(jī)制及對(duì)應(yīng)代碼實(shí)現(xiàn),需要的朋友可以參考下2024-10-10