找不到名为“interlockedexchange”的入口点
Posted
技术标签:
【中文标题】找不到名为“interlockedexchange”的入口点【英文标题】:unable to find an entry point named 'interlockedexchange' 【发布时间】:2010-04-08 11:10:59 【问题描述】:我用 c# vs2005 .net 构建了一个应用程序。
当我以 win 32 位运行应用程序时,一切正常,但是 在 win 64 中运行应用程序时,它在尝试调用时崩溃 pinvoke interlockedexchange(在 kernel32.dll 中)函数。
这是一个例外:
我没有在system32目录下的kernel32.dll中找到interlockedexchange函数,但在syswow64目录下(在kernel32.dll中)找到了。
我猜 .net 运行时配置为 system32 目录而不是 syswow64 。 如何更改此配置?你能想到任何其他可能导致这种情况的问题吗? 任何帮助,将不胜感激! 谢谢,
三木阿米特
【问题讨论】:
【参考方案1】:如果您设置为使用 InterlockedExchange 并想要 32 位版本,您可以更改项目设置以强制它以 32 位运行。转到项目设置中的“构建”选项卡,并将“平台目标”更改为 x86。然后它将以 32 位运行。
【讨论】:
【参考方案2】:这并不能直接回答你的问题,但为什么不打电话给System.Threading.Interlocked.Exhange()
而不是求助于P/Invoke?
【讨论】:
感谢您的回复!我需要设置一个共享内存 Intptr(指针),据我所知 Interlocked.Exhange 只能更改 .net 变量 @Miki,情况并非如此,.NET Interlocked.Exchange 可以在任何内存位置上运行。如果它是 .NET 内存,当然,您必须先将其固定。见***.com/questions/1116790/…。以上是关于找不到名为“interlockedexchange”的入口点的主要内容,如果未能解决你的问题,请参考以下文章
InterlockedExchange 与 InterlockedExchangePointer