c+中的链接错误+; 我有一个关于使用VisualStudio编译C++代码的问题。 我创建了3个项目:A、B和C。A和B被创建为动态库,而C被创建 作为静态库。有3个类,每个项目中定义一个

c+中的链接错误+; 我有一个关于使用VisualStudio编译C++代码的问题。 我创建了3个项目:A、B和C。A和B被创建为动态库,而C被创建 作为静态库。有3个类,每个项目中定义一个,c++,C++,类别A在项目A中定义: ClassA { public testA(); }; 类别B在项目B中定义 ClassB: public ClassC { public: testB(); }; 类别C在项目C中定义 ClassC { public: testC(); }; 在VisualStudio中,A依赖于B,B依赖于C,但A不依赖于C。 ClassA::testA的实现还包括: ClassA::testA () { ClassB b; b.testC(); } 当我构建项目A时,我遇

类别A在项目A中定义:

ClassA
{
public
testA();
};
类别B在项目B中定义

ClassB: public ClassC
{
public:
testB();
};
类别C在项目C中定义

ClassC
{
public:
testC();

};
在VisualStudio中,A依赖于B,B依赖于C,但A不依赖于C。 ClassA::testA的实现还包括:

ClassA::testA ()
{
ClassB b;
b.testC();
}
当我构建项目A时,我遇到了一个链接错误,抱怨找不到testC的外部符号。
如何在不创建A和C之间的依赖关系的情况下解决此问题?

无论您喜欢与否,A都依赖C。B在中间执行这一点。

直接的解决方法是在B中链接,或者编写正确的代码来动态链接它


作为一个提示,保持接口C而不是C++——它使库更有用,并且可能工作。在这个例子中,它也会使发生这种情况的原因变得更加明显。

B肯定依赖于C


没有B就不能链接A。由于B继承自C,A隐式依赖于C。编译器/链接器需要将C的构造函数拉入项目中,以便它解决A的所有依赖关系。

@BobbyDigital Read Reach:
当我构建项目A时,我收到一个链接错误,抱怨找不到testC的外部符号。如何在不创建A和C之间的依赖关系的情况下解决此问题?
A依赖于C(间接通过B)。考虑到你设置描述的方式,这是无法回避的。@SchighSchagh:它一定是后来编辑的。