添加 _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的主要内容,如果未能解决你的问题,请参考以下文章

Linux系统添加网卡后找不到网卡信息

添加服务提供者类后找不到类

#error 请为 _AFXDLL 构建使用 /MD 开关

MFC:_AFXDLL

在类路径中添加库后找不到 Jetty WebSocket 类

解决CentOS添加新网卡后找不到网卡配置文件