невозможно найти точку входа с именем «interlockedexchange» - PullRequest
1 голос
/ 08 апреля 2010

Я создал приложение в c # vs2005 .net.

Все работает нормально, когда я запускаю приложение в win 32 bit, но при запуске приложения в win 64 вылетает при попытке вызвать функция pinvoke interlockedexchange (которая находится в kernel32.dll).

Это исключение: невозможно найти точку входа с именем 'interlockedexchange'

Я не нашел функцию interlockedexchange в kernel32.dll в каталоге system32, но она была найдена в каталоге syswow64 (в kernel32.dll).

Я полагаю, что среда выполнения .net настроена на каталог system32, а не на syswow64. Как можно изменить эту конфигурацию? Можете ли вы вспомнить любую другую проблему, которая может вызвать это? любая помощь будет оценена! спасибо,

Мики Амит

Ответы [ 2 ]

0 голосов
/ 08 апреля 2010

Если вы используете InterlockedExchange и хотите использовать 32-разрядную версию, вы можете изменить настройки своего проекта, чтобы он стал 32-разрядным. Перейдите на вкладку «Сборка» в настройках проекта и измените «Цель платформы» на x86. Затем он будет работать как 32-разрядный.

0 голосов
/ 08 апреля 2010

Это не дает прямого ответа на ваш вопрос, но почему бы не позвонить System.Threading.Interlocked.Exhange() вместо обращения к P / Invoke?

...