添加 _AFXDLL 宏和 clr 支持后找不到 InterlockedAdd64
Posted
技术标签:
【中文标题】添加 _AFXDLL 宏和 clr 支持后找不到 InterlockedAdd64【英文标题】:InterlockedAdd64 can't be found after adding _AFXDLL macro and clr support 【发布时间】:2020-12-17 16:04:30 【问题描述】:我添加了_AFXDLL宏,出现以下两个错误:
error C2039: 'InterlockedAdd64': is not a member of '`global namespace''
error C3861: 'InterlockedAdd64': identifier not found
是什么原因以及如何解决这个问题?
我在尝试为使用 MFC 的 DLL 添加 c++/clr 支持时遇到了这个问题。
【问题讨论】:
从文档中,您可能想试试这个:这个函数是尽可能使用编译器内部实现的。有关详细信息,请参阅 Winbase.h 头文件和 _InterlockedAdd64。 相关:InterlockedIncrement64 with managed C++. 【参考方案1】:如果我想使用 clr 支持,看起来我很不走运:
MSDN: _MANAGED 当设置了 /clr 编译器选项时定义为 1。否则,未定义。
来自 winnt.h:
#if !defined(_MANAGED)
#if (_MSC_VER >= 1600)
...
FORCEINLINE
LONG64
_InterlockedAdd64 (
_Inout_ _Interlocked_operand_ LONG64 volatile *Addend,
_In_ LONG64 Value
)
...
#define InterlockedAdd64 _InterlockedAdd64
...
#endif // !defined(_MANAGED)
【讨论】:
以上是关于添加 _AFXDLL 宏和 clr 支持后找不到 InterlockedAdd64的主要内容,如果未能解决你的问题,请参考以下文章