Проблема с компиляцией проектов в x86 и x64 - PullRequest
1 голос
/ 27 января 2011

Я работаю с приложением, которое должно быть запущено в 64-битной Windows, и использую элемент управления OCX, который должен работать в режиме 32-битной эмуляции. Я могу встроить этот элемент управления в библиотеку элементов управления Windows Forms, а затем добавить ссылку на эту библиотеку в основное приложение, чтобы установить другой режим эмуляции для этого элемента управления и другой для всего приложения, но это создает другую проблему. В этом случае я получаю ошибку «Исключение типа InvalidActiveXStateException было сгенерировано». Я попытался использовать эту библиотеку управления Windows Forms с проектом, который также выполнялся в x86, и все было в порядке.

Знаете ли вы, каким образом я могу запустить приложение, содержащее два или более проектов, в которых один проект будет запущен в x86, а другой - в x64? (Правильно знать, когда каждый проект находится в другом режиме, он не может найти некоторые сборки)

Ответы [ 2 ]

4 голосов
/ 27 января 2011

Вы не можете смешивать 32- и 64-битный код в одном процессе.Если вам абсолютно необходимо запустить этот 32-битный элемент управления из 64-битного приложения, вам нужно будет сделать это как внепроцессный сервер.Хотя это, вероятно, возможно, я не считаю, что это тривиально.

В любом случае, вам, вполне возможно, не нужно этого делать.Поскольку 64-битная Windows запускает 32-битные приложения, вы можете убедиться, что ваше приложение предназначено для x86 вместо AnyCPU , а затем оно будет работать на 64-битной Windows.

0 голосов
/ 27 января 2011

Я не уверен, что это то, что вы ищете, но вы можете создать два проекта для любого из ваших текущих проектов.

Исходный код находится в одной из пар и т. Д., А X64 или X86 добавляет все файлы с использованием символических ссылок Visual Studio.

Тогда вам не нужно поддерживать дублирующийся код, а вам нужно будет настроить только один проект для X86 и аналог для X64 и т. Д.

Символьные ссылки создаются, когда вы пытаетесь добавить существующий элемент, нажимаете стрелку и выбираете «добавить ссылку».

Я обнаружил, что это не решение для вас (и почти неправильно). Спасибо комментаторам.

...