Невозможно загрузить 64-битную DLL-ошибку в C #

У меня есть 64-битный c ++ ddl, который я должен использовать в своем приложении c #. Я использовал это как

[DllImport("sampleDll.dll",
EntryPoint = "sampleFunction",
CharSet = CharSet.Ansi,
CallingConvention = CallingConvention.StdCall)]
public static extern int sampleFunction(char[] ch, int i);

Но когда я пытаюсь запустить приложение, оно показывает ошибку как

«Не удалось загрузить DLL ‘sampleDll.dll’: указанный модуль не найден.»

Я использую 64-битную ОС. Я попробовал копирование dll в папку System32

Но я все еще получаю ту же ошибку.

Пожалуйста, дайте мне знать, как обойти эту проблему ……..

1

Решение

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

Если вы скопировали файл в system32 тогда там будет выглядеть 64-битный процесс. Если скопированный файл называется sampleDll.dllтогда ваша программа его найдет. Итак, если вы видите

Невозможно загрузить DLL 'sampleDll.dll': указанный модуль не найден.

проблема не в том sampleDll.dll не может быть найдено, скорее, его зависимости не могут быть решены. Наиболее распространенным объяснением этого является то, что вам нужно установить среду выполнения C, которая sampleDll.dll зависит от. Консультируйтесь с документацией для этой DLL, чтобы узнать, каковы ее зависимости. Если это DLL, которую вы создали сами, то вы знаете, что использовали, когда создавали ее, и можете сами определить зависимости.

Наконец, я хотел бы подчеркнуть, что вы не должны копировать файлы в system32 каталог. Это относится к системе, и вы не должны ее трогать. Лучшее место для размещения DLL — это тот же каталог, что и исполняемый файл, который ее загружает.

2

Другие решения

Поместите вашу DLL в ту же папку, где развернуты приложения.

-1

По вопросам рекламы [email protected]