У меня есть собственный код C, я скомпилировал код в vC++ 2008 и скомпилировал его с помощью 'x64' as платформу в менеджере конфигурации, и у меня есть приложение C#, которое также скомпилировано с помощью «x64» в качестве платформы и вызывает функцию dll. Я использовал Dllimport для вызова функции из dll, как показано ниже.64-разрядная dll в 64-разрядном процессе Vista не удалась - Не удалось загрузить DLL-имя dll: указанный модуль не найден
using System.Runtime.InteropServices;
namespace test
{
public partial class Form1 : Form
{
[DllImport("mtest", CharSet = CharSet.Ansi)]
public extern static void e_path(string path);
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
MessageBox.Show("test");
swe_set_ephe_path("E:\\Gan");
}
}
}
в момент запуска приложения я получаю сообщение об ошибке, как показано ниже:
Необработанное исключение типа «System.DllNotFoundException» произошло в TEST.exe
Дополнительная информация: Невозможно загрузить DLL 'mydll': указанный модуль не найден. (Исключение из HRESULT: 0x8007007E)
Не могли бы вы помочь мне решить эту проблему. Если я запустил как dll, так и приложение, он работает нормально. Но мне нужно, чтобы функции dll вызывались с моих ASP-страниц, поэтому мне нужно как dll, так и приложение как 64-битное.
ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ: когда я проверил DLL для зависимости с помощью зависимостей ходунка для 64-разрядного Это показывает, что Kernel32.dll и NTDLL.DLL и MyDll.dll является x64.
, пожалуйста, помогите мне с этим.
Спасибо заранее,
Можете ли вы объяснить, что вы имеете в виду, когда вы говорите: «Если я бегу как DLL и applicaition его работает отлично.» [sic] –
Я имею в виду, если dll 32 бит, а приложение i под платформой x86 работает нормально. –
Я предлагаю вам попробовать ProcessMonitor - http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx - чтобы узнать, что именно происходит. Он покажет вам все попытки загрузить библиотеки и соответствующие зависимости и, вероятно, приведет вас к решению. – sharptooth