無法解析的外部符號

2021-10-03 08:54:38 字數 1110 閱讀 5910

在類模板類外實現.h和.cpp分來寫的時候

#pragma once

template

<

class

t>

class

person

;

#include

"stdafx.h"

#include

"person.h"

template

<

class

t>

person

::person

(t age)

template

<

class

t>

void person

::show()

// 類外實現分開寫1.cpp: 定義控制台應用程式的入口點。

//#include

"stdafx.h"

#include

using

namespace std;

#include

"person.h"

intmain()

嚴重性 ** 說明 專案 檔案 行 禁止顯示狀態

錯誤 lnk2019 無法解析的外部符號 「public: __thiscall person::person(int)」 (??0?katex parse error: undefined control sequence: \users at position 49: …被引用 類外實現分開寫1 c:\̲u̲s̲e̲r̲s̲\lfzh\source\re…person@h@@qaexxz),該符號在函式 _main 中被引用 類外實現分開寫1 c:\users\lfzh\source\repos\排序\類外實現分開寫1\類外實現分開寫1.obj 1

這種情況和模板實現機制,c++編譯機制有關

解決辦法

將#include"person.h"

改為#include"person.cpp"

所以類模板一半不要分開寫 將.cpp改為.hpp

#include"person.hpp"

無法解析外部符號

先檢視專案屬性裡附加目錄庫包不包含該檔案 資料夾屬性是不是唯讀 最後可能除錯的配置系統位數不對 函式未宣告或未實現等。最近又碰到了新的無法解析外部符號的問題。我在乙個dll專案中引用了另乙個dll專案的某個類成員函式,但該類並沒有匯出,於是出現無法解析的外部符號問題,載入dll專案只能呼叫其匯出的類...

無法解析的外部符號

在使用vs2008除錯程式的過程中,經常會出現無法解析的外部符號問題,可能的原因有很多種,下面這些是我一年來積累的經驗.僅供參考.考慮可能的原因 0 出現無法解析可能是因為lib檔案不正確,比如64位的編譯配置,結果使用的是32位的lib包.1 只寫了類宣告,但還沒有寫實現類,造成呼叫時無法解析 2...

無法解析的外部符號

在使用vs2008除錯程式的過程中,經常會出現無法解析的外部符號問題,可能的原因有很多種,下面這些是我一年來積累的經驗.僅供參考.考慮可能的原因 0 出現無法解析可能是因為lib檔案不正確,比如64位的編譯配置,結果使用的是32位的lib包.1 只寫了類宣告,但還沒有寫實現類,造成呼叫時無法解析 2...