我有一个头文件定义为:
A.h
class A
{
void f1();
void f2();
};
A.cpp
void A::f1(){}
void A::f2(){}
现在我正在定义要使用此类函数的其他应用程序类,所以我创建了,
B.cpp
#include A.h
int main()
{
A a1;
a1.f1(); //linker error
}
但是当我调用这个函数时,它会给出链接错误,比如未解析的外部符号。
我有一个头文件定义为:
A.h
class A
{
void f1();
void f2();
};
A.cpp
void A::f1(){}
void A::f2(){}
现在我正在定义要使用此类函数的其他应用程序类,所以我创建了,
B.cpp
#include A.h
int main()
{
A a1;
a1.f1(); //linker error
}
但是当我调用这个函数时,它会给出链接错误,比如未解析的外部符号。
首先,您应该复制并粘贴确切的错误,而不是说它是“类似”某某错误。您可以删除我们需要回答您的问题的重要细节。
在这种特殊情况下,解决方案相当简单。您需要在 Visual C++ 中创建一个项目并将所有 .cpp 文件添加到该项目中。当你编译时,链接器应该能够找到它需要的一切。
链接器错误和编译器错误是非常不同的事情。#included 文件中的这些函数声明所做的只是告诉编译器如何调用这些函数。函数在别处定义。编译器不需要知道定义就知道如何调用它们。将所有这些不同的部分放在一起是链接器的工作。如果您不向链接器提供所需的部分,您将无法获得可执行文件。相反,您将收到链接器错误。
您需要编译 A.cpp 和 B.cpp,然后将它们提供给您的链接器。仅仅因为编译器和链接器经常被同一个工具调用并不意味着它们是同一个东西。他们不是。他们有完全不同的工作。