Программа написана на C# и использует неуправляемую DLL. Предложение превратить ее в управляемую не обсуждается. Все прекрасно работает. И тут мой заказчик решил запустить это приложение под Vista x64. Результат — приложение не видит DLL.
Насколько я понимаю, ситуация проста. Мой процесс там под .Net — 64 битный процесс, а 64-битный процесс не может загружать 32-битную DLL.
Что-то можно сделать без создания 64-битной DLL ? Есть ли под 64-битной Vista 32-битная .Net и если да — как указать, чтобы моя программа использовала ее ?
Здравствуйте, Pavel Dvorkin, Вы писали:
PD>Что-то можно сделать без создания 64-битной DLL ?
Можно. Запускать приложение в режиме 32 бит.
PD>Есть ли под 64-битной Vista 32-битная .Net и
Есть.
PD>если да — как указать, чтобы моя программа использовала ее ?
Для этого нужно указать platform при сборке или использовать corflags.
Воспользовался методом, о котором написал Mab, спасибо обоим.
With best regards
Pavel Dvorkin
Re[2]: проблема с неуправляемой DLL
От:
Аноним
Дата:
27.06.08 07:21
Оценка:
Здравствуйте, Mab, Вы писали:
PD>>Что-то можно сделать без создания 64-битной DLL ? Mab>Можно. Запускать приложение в режиме 32 бит. Mab>Для этого нужно указать platform при сборке или использовать corflags.
А если это приложение — WebService? IIS же не запустить в 32bit режиме?
IIS 6.0 supports both the 32-bit mode and the 64-bit mode.
....
ASP.NET 2.0, 32-bit version
To run the 32-bit version of ASP.NET 2.0, follow these steps:
1. Click Start, click Run, type cmd, and then click OK.
2. Type the following command to enable the 32-bit mode:
cscript %SYSTEMDRIVE%\inetpub\adminscripts\adsutil.vbs SET W3SVC/AppPools/Enable32bitAppOnWin64 1
3. Type the following command to install the version of ASP.NET 2.0 (32-bit) and to install the script maps at the IIS root and under:
%SYSTEMROOT%\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe -i
4. Make sure that the status of ASP.NET version 2.0.50727 (32-bit) is set to Allowed in the Web service extension list in Internet Information Services Manager.