Указанный модуль не найден - 64-битная DLL - PullRequest
1 голос
/ 04 июня 2009

У меня была 32-битная dll, написанная с использованием Native C, когда я пытался скомпилировать с помощью VC ++ (VS2008) для преобразования dll в x64 путем изменения платформы, которую он компилировал. Но когда я пытался получить доступ к dll из моего приложения C #, которое также является платформой x64, он не может загрузить dll. Я использовал Dllimport для связи DLL с моим приложением.

Операционная система, которую я использую в Vista, но я не смог вызвать функцию dll из моего приложения, которое, по ее словам, не смогло загрузить dll.

Есть ли способ решить эту проблему.

Жду от вас помощи.

С уважением, Ga

Ответы [ 5 ]

0 голосов
/ 04 июня 2009

У меня была проблема с этим однажды по этим направлениям. У меня была C ++ DLL, которая действовала как интерфейс к аппаратному обеспечению, которое мне нужно было вызывать из C #. Тем не менее, он не сможет выполнить вызов DllImport, если часть оборудования не будет подключена. Это потому, что функция инициализации DLL возвращала сбой, поэтому C # просто сказал, что не может загрузить DLL, возможно, это не относится DLL есть.

Убедитесь, что вы не вызываете какую-либо ошибку при настройке DLL в своем коде C.

0 голосов
/ 04 июня 2009

Спасибо за вашу помощь.

Когда я поместил dll в C: \ Windows \ System32 \, ошибка разрешилась.

Спасибо, Ga

0 голосов
/ 04 июня 2009

попробуйте инструмент «Ходьба по зависимостям» (ldd-like утилита для win, www.dependencywalker.com), чтобы узнать, какие ссылки против чего. может быть полезным.

0 голосов
/ 04 июня 2009

Проверьте, где вы собираете различные версии (x86 / x64) dll для.

Самое простое, что нужно сделать - установить целевой каталог для 64-битной dll как подкаталог 'x64' вашей целевой папки. В конфигурации вашего 64-разрядного решения установите целевой каталог C # также как каталог 'x64'.

Это гарантирует, что exe-файл для каждой платформы попытается загрузить правильную DLL.

0 голосов
/ 04 июня 2009

Я думаю, что это будут зависимости, в вашей новой DLL могут отсутствовать 64-битные DLL, которые ей нужны.

...