C++ 链接项目,其中我使用来自其他项目的静态成员
我有链接的问题,我有两个项目,其中包括两个dll(A.dll B.dll)。在项目A中,我有静态的C++ 链接项目,其中我使用来自其他项目的静态成员,c++,static,linker,C++,Static,Linker,我有链接的问题,我有两个项目,其中包括两个dll(A.dll B.dll)。在项目A中,我有静态的Singleton-Singleton。 伪代码: 项目A中的一个标题 ClassA ... ... Singleton singleton; ... ... 在cpp文件中项目B的某个地方,我有: ... ... ClassA::singleton.SomeMethod(); ... ... 项目编译,但链接存在问题 我在FreeCryEngine SDK中遇到此问题 当我试图在GameDLL
Singleton-Singleton
。
伪代码:
项目A中的一个标题
ClassA
...
...
Singleton singleton;
...
...
在cpp文件中项目B的某个地方,我有:
...
...
ClassA::singleton.SomeMethod();
...
...
项目编译,但链接存在问题
我在FreeCryEngine SDK中遇到此问题
当我试图在GameDLL项目中调用CCryAction::GetCryAction()
时,就会发生这种情况。
这不起作用:
int a = CCryAction::GetCryAction()->IsInLevelLoad();
错误3错误LNK2001:未解析的外部符号“专用:静态
类CCryAction*CCryAction::m_pThis“
(?m_pThis@CCryAction@@0PAV1@A)E:\CryENGINE\u v3\u 3\u 5\u 2456\u freedk\Code\Game\GameDll\GameStateRecorder.obj GameDll
这个方法看起来怎么样
static CCryAction * GetCryAction() { return m_pThis; }
你需要:在标题中
struct ClassA {
static Singleton singleton;
};
// or
extern Singleton g_singleton;
在cpp文件中:
Singleton ClassA::singleton;
// or
Singleton g_singleton;
因此,您可以在包含标题的翻译单元中调用
ClassA::singleton.someMethod()
或::g\u singleton.someMethod()
。请确保链接上述cpp的对象文件。您已经告诉我们您有什么错误,您现在是如何链接的,或者只是询问如何链接简化但结构类似的解决方案。