Как запустить 32-разрядное приложение.NET в 64-разрядной среде?

Это работает хорошо на меня, когда мне нужен он. Это проверяет, чтобы видеть, нажал ли пользователь клавишу выхода для выхода из цикла.

Примечание, что это имеет действительно большой недостаток: это обнаружит, если пользователь поразит клавишу выхода в КАКОЕ-ЛИБО приложение - не просто Ваш. Но и это - большой прием в разработке, когда Вы хотите дать себе способ прервать длительный цикл или способ удержать клавишу Shift для обхода небольшого количества кода.

Option Explicit

Private Declare Function GetAsyncKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer

Private Sub Command1_Click()
    Do
        Label1.Caption = Now()
        Label1.Refresh
        If WasKeyPressed(vbKeyEscape) Then Exit Do
    Loop

    Label1.Caption = "Exited loop successfully"

End Sub

Function WasKeyPressed(ByVal plVirtualKey As Long) As Boolean
    If (GetAsyncKeyState(plVirtualKey) And &H8000) Then WasKeyPressed = True
End Function

Документация для GetAsyncKeyState здесь:

http://msdn.microsoft.com/en-us/library/ms646301 (По сравнению с 85) .aspx

7
задан Peter Mortensen 9 January 2011 в 00:31
поделиться

6 ответов

You could compile it for x86 instead of any cpu that way it will run against 32bit librarys on a 64bit windows.

Or swap 32bit librarys for 64bit when installning on 64bit windows. Among other some Sqlite dlls are specific for 32/64 bit

9
ответ дан 6 December 2019 в 06:50
поделиться

In the build settings for you project set the platform target to x86 instead of Any CPU. This will solve problems where your project has "hidden" dependendencies on 32 bit subsystems that are not available in 64 bit. Your application will then run in the 32 bit susbsystem on 64 bit Windows.

4
ответ дан 6 December 2019 в 06:50
поделиться

Я столкнулся с той же проблемой. В моем случае было достаточно скомпилировать основную сборку (.exe) моего приложения специально для "x86". Другие сборки (.dll) скомпилированы с использованием «Any CPU».

Наше приложение отлично работает в 32-битных и 64-битных системах.

1
ответ дан 6 December 2019 в 06:50
поделиться

It should just run unless you're referencing libraries that are specifically only available for 32bit (Jet DB drivers are one example) or unless you've told your compiler to compile your application to 32bit only.

What does the crash say?

0
ответ дан 6 December 2019 в 06:50
поделиться

Если вы работаете в Windows, вы должны использовать CorFlags Инструмент преобразования ( CorFlags.exe ). Таким образом вы можете заставить приложение / dll работать в 32- или 64-битном пространстве. Подробности и примеры использования доступны на сайте http://msdn.microsoft.com/en-us/library/ms164699 (VS.80) .aspx .

6
ответ дан 6 December 2019 в 06:50
поделиться

Это приложение Windows / ASP.NET?

Если это приложение ASP.NET. вы можете запускать только 32/64-битные режимы одновременно. Для этого,

Случай 1. Вам необходимо Enable32bitApplication в пуле приложений в IIS. Затем сбросьте IIS.

Случай 2. Проверьте соответствующую DLL в regedit.

Если это Windows, запустите эту команду из командной строки Visual Studio,

CorFlags.exe TheApp.exe /32BIT+ //Enables 32 bit application.
0
ответ дан 6 December 2019 в 06:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: