Камни преткновения при переходе с 32 на 64 бит - PullRequest
1 голос
/ 16 июля 2010

Недавно я получил ПК под управлением Windows 7 для дальнейшего развития, поскольку он будет ближе к нашей производственной среде. Я был в процессе работы над решением на моей старой машине (32-битная Windows XP), но решил начать работать над ним с новой коробкой, чтобы попытаться решить любые проблемы. У меня установлена ​​Visual Studio 2008 на обеих коробках.

Решение, над которым я работаю, использует NServiceBus, который 32-битный. Драйверы oracle, установленные на устройстве dev, являются 64-битными, и это доставляет мне много хлопот. Я получаю ошибки во время выполнения, что NserviceBus не может загрузить 64-битную DLL оракула. Я попробовал каждую комбинацию платформы решений и целевой платформы, о которой только мог подумать. Я на самом деле сделал это отлично работает около недели назад, но с тех пор я отменил изменения и перезагрузил shelveset и я не могу заставить его работать снова.

Я ищу некоторые общие рекомендации, советы и подсказки для работы в этой смешанной среде. Нужно ли возвращаться и устанавливать проекты для сборки как 32-битные, если проект, который ссылается на них, использует 32-битную сборку? И т.д. Спасибо за любые рекомендации.

Ответы [ 3 ]

2 голосов
/ 16 июля 2010

32- и 64-битный код не могут существовать в одном и том же процессе.

Если вам нужно использовать 32-битную DLL из 64-битной программы (или наоборот), вам потребуетсясоздать новый процесс и использовать некоторую технику межпроцессного взаимодействия (IPC).

2 голосов
/ 16 июля 2010

Вы должны быть однородными в DLL и в исполняемом формате - если один 32-битный, все должно быть 32-битным.Если один 64-битный, все должно быть 64-битным.

Единственным исключением является управляемый код: если установлено значение «Любой ЦП», он может быть загружен 32- или 64-разрядным процессом.

1 голос
/ 16 июля 2010

Это проблема, с которой я столкнулся с платформой ASCOM (Common Object Model Model).По сути, если существует одна 32-битная зависимость, то весь код должен быть 32-битным.В нашем случае, однако, мы не обязательно владеем клиентским приложением, поэтому мы не можем контролировать, будет ли оно 32-разрядным или 64-разрядным, поэтому нам пришлось строго удалить все 32-разрядные зависимости из нашего кода и скомпилировать вседля «любого процессора».

альтернативный текст http://community.tigranetworks.co.uk/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/tim_5F00_long/1373.image_5F00_7A568AC3.png

Некоторые из идей, которые мы исследовали в ASCOM, описаны в моем блоге Electric Dreams .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...