我在c#vs2005 .net中构建了一个应用程序。运行在Win 64,同时试图调用 的PInvoke的interlockedexchange(这是kernel32.dll中内)功能,它的应用程序崩溃时无法找到名为'interlockedexchange'的入口点
一切正常,当我运行在Win 32位应用程序,但 。
这是例外: 无法找到名为“interlockedexchange”
切入点,我没有找到SYSTEM32目录下的KERNEL32.DLL内interlockedexchange功能,但它是在SysWow64资料目录下找到(在KERNEL32 .dll)。
我猜测.NET运行时配置为system32目录而不是syswow64。 如何更改此配置?你能想到任何其他可能导致此问题的问题吗? 任何帮助将不胜感激! 感谢,
三木阿米特
感谢您的回复! 我需要设置共享内存Intptr(指针),据我所知Interlocked.Exhange只能更改.net变量 – 2010-04-08 11:41:39
@Miki,情况并非如此,.NET Interlocked.Exchange可以在任何内存位置上运行。如果它是.NET内存,当然你必须首先固定它。请参阅http://stackoverflow.com/questions/1116790/c-sharp-interlocked-exchange/5589515#5589515。 – 2012-07-29 18:58:53