链接项目,我使用其他项目的静态成员
我在链接时遇到问题,我有两个项目编译为两个 dll ( A.dll B.dll )。在项目 A 中,我有静态 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_v3_3_5_2456_FreeSDK\Code\Game\GameDll\GameStateRecorder.obj GameDll
这个方法看起来怎么样?
static CCryAction * GetCryAction() { return m_pThis; }
I have problem with linking, I have two project which compliles to two dlls ( A.dll B.dll ). In project A, i have static Singleton singleton
.
Psudocode :
One of headers in project A
ClassA
...
...
Singleton singleton;
...
...
In some place in project B in cpp file i have:
...
...
ClassA::singleton.SomeMethod();
...
...
Project compile, but there is a problem with linking.
I have this problem in FreeCryEngine SDK
This happen when I try to invoke CCryAction::GetCryAction()
in GameDLL Project.
This don't work:
int a = CCryAction::GetCryAction()->IsInLevelLoad();
Error 3 error LNK2001: unresolved external symbol "private: static
class CCryAction * CCryAction::m_pThis"
(?m_pThis@CCryAction@@0PAV1@A) E:\CryENGINE_v3_3_5_2456_FreeSDK\Code\Game\GameDll\GameStateRecorder.obj GameDll
How this method look ?
static CCryAction * GetCryAction() { return m_pThis; }
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您需要: 在 cpp 文件的标头中
:
因此您可以在翻译单位中调用
ClassA::singleton.someMethod()
或::g_singleton.someMethod()
包括标题。请务必链接上面 cpp 的目标文件。You need: in the header
In cpp file:
So you can call
ClassA::singleton.someMethod()
or::g_singleton.someMethod()
in translation units that include the header. Be sure to link the object file for the cpp above.