У меня есть программа C#, которую я компилирую со всеми настройками по умолчанию на x64 компьютере.
Я хочу к p/invoke DLL, который я знаю, 32-разрядный (неуправляемый) C++ DLL.
Я могу заставить это работать когда мои прогоны программы C# над 32-разрядной машиной, но не 64-разрядной машиной.
Как я могу указать в вызове DllImport, что звоню в 32-разрядный dll?
Пример того, что я имею теперь:
[DllImport("test32bitdll.dll", SetLastError=true)]
public static extern void MyFunc();
У меня нет исходного кода файла test32bitdll.dll.
Выполнение 32-битного неуправляемого кода в 64-битном процессе невозможно. Или наоборот. Доступные вам параметры:
Третий вариант может дать вам максимальную отдачу от вложенных средств, но он может быть медленным, если обменивается много данных и имеет тенденцию быть хрупким. Может быть трудно справиться с неудачей суррогатного процесса.
Самый простой способ заставить это работать - изменить ваш exe на сборку "только для x86".