0
我一直有一個相當令人沮喪的鏈接器問題,對我來說沒有多大意義。我有以下4個文件:C++鏈接器問題,未解決的外部符號與我自己的代碼
// CompileFunctions.h
#pragma once
#include "FileListing.h"
int compileSheet(FileListing & file);
int compileVerse(FileListing & file);
// CompileSheet.cpp
#include "CompileFunctions.h"
int compileSheet(FileListing & file){
...
}
// CompileVerse.cpp
#include "CompileFunctions.h"
int compileVerse(FileListing & file){
...
}
// main.cpp
#include "CompileFunctions.h"
int main(){
...
compileSheet(file);
compileVerse(file);
}
這將生成以下鏈接錯誤:
main.obj : error LNK2001: unresolved external symbol "int __cdecl compileVerse(struct FileListing &)" ([email protected]@[email protected]@@Z)
我已經嘗試添加extern
在頭部的聲明,檢查,以確保兩個源文件均相同的目錄和編譯,並清理構建。但似乎沒有任何幫助。鑑於一個相同的功能如何鏈接正常,而另一個不是令人困惑的我,我不知道是什麼原因造成的。
因此,沒有你的項目成功打造,如果你刪除調用'compileVerse(文件);'? –
@MohamadElghawi - 奇怪的是...... –
它可能是一些流氓'extern「C」',它改變了聲明和定義之間的函數簽名。 'extern「C」'函數與非'extern「C」'完全不同。 – Dialecticus