Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/163.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 链接项目,其中我使用来自其他项目的静态成员_C++_Static_Linker - Fatal编程技术网

C++ 链接项目,其中我使用来自其他项目的静态成员

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

我有链接的问题,我有两个项目,其中包括两个dll(A.dll B.dll)。在项目A中,我有静态的
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的对象文件。

您已经告诉我们您有什么错误,您现在是如何链接的,或者只是询问如何链接简化但结构类似的解决方案。