无法解析的外部符号C++ - 声明错误?
我在写课程时遇到问题。 当我将定义移动到其他源文件以保持“干净”时出现问题。无法解析的外部符号C++ - 声明错误?
我收到的消息是:
1>------ Build started: Project: 1 projekt - sklep, Configuration: Debug Win32 ------
1> main.cpp
.1funkcje.obj : error LNK2001: unresolved external symbol "class Rachunek Kasa_sklepowa" .([email protected]@[email protected]@A)
1>metody_r.obj : error LNK2001: unresolved external symbol "class Rachunek Kasa_sklepowa" .([email protected]@[email protected]@A)
1>C:\Users\Ja\Desktop\Studia\PW\Semestr II\C++\Cwiczenia - klasy,obiekty\Debug\1 projekt - .sklep.exe : fatal error LNK1120: 1 unresolved externals
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
其中Kasa_Sklepowa
是我宣布在main.cpp中一个全局对象 - 我想这可能就是为什么有一些错误的理由。
之前它已经告诉我,类声明有字符串的错误。
#pragma once
class Rachunek
{
double saldo_ogolne;
public:
Rachunek() {saldo_ogolne=0;};
~Rachunek();
void transakcja(std::string,std::string,double);
void czysc_zarobki();
};
源文件(CPP)
extern Rachunek Kasa_sklepowa;
void Rachunek::transakcja(string _pes,string co,double ile)
{
bla bla
}
主要文件
Rachunek Kasa_sklepowa();
int main (int agc, char**argv)
{
...
}
这条线:
Rachunek Kasa_sklepowa();
声明了一个函数,该函数是从一个变量不同。
你需要做的是写在相同的标题为Rachunek类这一行:
extern Rachunek Kasa_sklepowa;
然后在相应的.cpp文件,写:
Rachunek Kasa_sklepowa;
第一行只是声明以便它对编译器可见,第二个实际定义它,以便它放置在.obj文件中并且对链接器可见。
BTW,更好的办法是使用一个静态变量:
class Rachunek
{
public:
static Rachunek Kasa_sklepowa;
...
而在.cpp文件中写:
Rachunek Rachunek::Kasa_sklepowa;
OK,少2个错误:) 这里只有一个左 1> funkcje.obj:错误LNK2001:无法解析外部符号“class Rachunek Kasa_sklepowa”(?Kasa_sklepowa @@ 3VRachunek @@ A) 1> C:\ Users \ Ja \ Desktop \ Studia \ PW \ Semestr II \ C++ \ Cwiczenia - klasy,obiekty \ Debug \ 1 projekt - sklep .exe:致命错误LNK1120:1无法解析的外部信息 – 2013-03-28 02:22:50
也许您没有将Rachunek实施文件(.cpp)添加到您的项目中。 – user1610015 2013-03-28 02:25:10
我已添加 您知道..注意现在funkcje.obj和funkcje.cpp中的错误点我有 extern Rachunek Kasa_sklepowa; 也许它与它有关? – 2013-03-28 02:27:17
我不认为你需要在cpp文件的外部声明。
关于您之前遇到的与字符串相关的错误 - 请确保您使用的是#import <string>
。
字符串正常。 有趣的是,我只从一个文件移动到“transakcja”功能,另一个没有别的:( – 2013-03-28 02:16:57
为什么需要 “外部Rachunek Kasa_sklepowa;”在类impl文件中?你也必须在main.cpp中包含“Rachunek.h”文件。 – Arun 2013-03-28 02:01:09
它看起来像你正在使用MSVC,请将Rachunek.h/.cpp文件添加到您的项目。 – Arun 2013-03-28 02:02:19
我在主文件中包含了Rachunek.h。 我必须有这个“外部..”,因为那样我就有错误,如 > 1> c:\ users \ ja \ desktop \ studia \ pw \ semestr ii \ C++ \ cwiczenia - klasy,obiekty \ 1 projekt - sklep \ metody_r.cpp(71):错误C2065:'Kasa_sklepowa':未声明的标识符 它们已被添加到我的项目中。 你想让我把它们粘贴在这里吗? – 2013-03-28 02:11:42