Загрузка 32-битной библиотеки DLL в 64-битном процессе [дубликаты]
На этот вопрос уже есть ответ:
Целевая 32-битная или 64-битная собственная DLL в зависимости от среды 3 ответаDllImport - была предпринята попытка загрузить программу с неверным форматом [duplicate] 1 ответЯ хочу, чтобы мое приложение на C # условно запускало собственный метод, условно выбирая, запускать либо DLL-версию x86, либо x64. Всякий раз, когда я пытаюсь загрузить 32-битную DLL, я получаю следующее сообщение об ошибке:
Unhandled Exception: System.BadImageFormatException: An attempt was made to load a program with an incorrect format. (Exception from HRESULT: 0x8007000B)
at <exeName>.MiniDumpMethods.MiniDumpWriteDumpX86(IntPtr hProcess, UInt32 processId, SafeHandle hFile, MINIDUMP_TYPE dumpType, IntPtr expParam, IntPtr userStreamParam, IntPtr callbackParam)
Базовый контекст: Я хочу, чтобы мой двоичный файл занимал дамп памяти данного процесса. В зависимости от того, 32-разрядный или 32-разрядный процесс, который принимает дамп памяти, он выберет метод MiniDumpwriteDump из версии dbghelp.dll для x86 или x64.
В настоящее время я делаю следующее:
[SuppressUnmanagedCodeSecurity]
internal static class MiniDumpMethods
{
[DllImport("dbghelp.dll",
EntryPoint = "MiniDumpWriteDump",
CallingConvention = CallingConvention.StdCall,
CharSet = CharSet.Unicode,
ExactSpelling = true,
SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
public static extern bool MiniDumpWriteDump(
IntPtr hProcess,
uint processId,
SafeHandle hFile,
MINIDUMP_TYPE dumpType,
IntPtr expParam,
IntPtr userStreamParam,
IntPtr callbackParam);
[DllImport("dbghelpx86.dll",
EntryPoint = "MiniDumpWriteDump",
CallingConvention = CallingConvention.StdCall,
CharSet = CharSet.Unicode,
ExactSpelling = true,
SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
public static extern bool MiniDumpWriteDumpX86(
IntPtr hProcess,
uint processId,
SafeHandle hFile,
MINIDUMP_TYPE dumpType,
IntPtr expParam,
IntPtr userStreamParam,
IntPtr callbackParam);
}
Любая идея, как я могу условно загрузить версию DLL для x86 или x64?
(Примечание: dbghelpx86.dll - это x86-версия dbghelp.dll, которую я переименовал)
Благодарност