无法找到名为'interlockedexchange'的入口点

时间:2010-04-08 11:11:00

标签: c# .net windows 64-bit dllimport

我在c#vs2005 .net。

中构建了一个应用程序

当我以32位的胜利运行应用程序时,一切正常,但是 当在win 64中运行应用程序时,它在尝试呼叫时崩溃 pinvoke interlockedexchange(在kernel32.dll中)函数。

这是例外: 无法找到名为'interlockedexchange'的入口点

我没有在system32目录下的kernel32.dll中找到interlockedexchange函数,但它在syswow64目录下找到(在kernel32.dll中)。

我想.net运行时配置为system32目录而不是syswow64。 如何更改此配置?您能想到可能导致此问题的任何其他问题吗? 任何帮助,将不胜感激! 谢谢,

Miki Amit

2 个答案:

答案 0 :(得分:0)

这不会直接回答您的问题,但为什么不拨打System.Threading.Interlocked.Exhange()而不是诉诸P / Invoke?

答案 1 :(得分:0)

如果您设置使用InterlockedExchange并且想要32位版本,则可以更改项目设置以强制它以32位运行。转到项目设置中的“构建”选项卡,将“平台目标”更改为x86。然后它将以32位运行。