【发布时间】:2016-12-21 14:03:58
【问题描述】:
我正在使用 clang++ 3.8 ,libACE 6.3.3 编译一个应用程序,包括 -std=c++11
但我遇到了包含 ACE Atomic_OP 的问题
包括这样的标题:
#include <ace/ACE.h>
#include <ace/Thread.h>
#include <ace/TSS_T.h>
#include <ace/Atomic_Op.h>
我已经
../game/libgame.a(WorldSocketMgr.cpp.o):在函数中
ACE_Atomic_Op<ACE_Thread_Mutex, long>::operator--()': /usr/include/ace/Atomic_Op.inl:72: undefined reference toACE_Atomic_Op::decrement_fn_' ../game/libgame.a(WorldSocketMgr.cpp.o):在函数中ACE_Atomic_Op<ACE_Thread_Mutex, long>::operator++()': /usr/include/ace/Atomic_Op.inl:50: undefined reference toACE_Atomic_Op::increment_fn_' ../game/libgame.a(WorldSession.cpp.o):在函数中ACE_Atomic_Op<ACE_Thread_Mutex, long>::operator=(long)': /usr/include/ace/Atomic_Op.inl:166: undefined reference toACE_Atomic_Op::exchange_fn_' ../game/libgame.a(WorldSession.cpp.o):在函数中ACE_Atomic_Op<ACE_Thread_Mutex, long>::operator-=(long)': /usr/include/ace/Atomic_Op.inl:114: undefined reference toACE_Atomic_Op::exchange_add_fn_' 铿锵声: 错误:链接器命令失败,退出代码为 1(使用 -v 查看 调用)
我该如何解决?
更新:
我变了
ACE_Atomic_Op<ACE_Thread_Mutex, time_t> m_timeOutTime;
在
ACE_Atomic_Op<ACE_Thread_Mutex, int> m_timeOutTime;
和
ACE_Atomic_Op<ACE_Thread_Mutex, long> m_refs;
在
ACE_Atomic_Op<ACE_Thread_Mutex, int> m_refs;
现在可以编译了,但我不确定它是否安全。
【问题讨论】:
-
你在编译ACE和编译你的应用程序时是否有相同的内联设置,检查我们在调用编译器时传递的INLINE定义
-
我正在使用来自 ubuntu 存储库的 libace-6.0.3,我没有编译它们
-
不幸的是,我无法使用操作系统的外部 ACE 使用 clang 进行编译。所以我现在正在尝试将它包含在我的项目中:stackoverflow.com/questions/39014042/…
-
@JohnnyWillemsen 你能更好地解释一下你的意思吗?
标签: c++ c++11 clang clang++ ace