Загрузка неуправляемой длл - C#
Формулировка задачи:
Доброго времени суток! Сразу скажу, не особо силен в данной теме, Вопрос в следующем. Кем-то когда то давно была написана dll на С++ в организации, сейчас переписываю одно приложение на С# подключаю ее в свой проект DllImport все прекрасно работает локально, выкладываю ее в сеть (закидываю ее на шару) делаю ярлык на рабочий стол, тоже работает. но как только я захожу на удаленку создаю ярлык на эту программу то вылетает ошибка (Не удается загрузить DLL: XXXX.dll, Не найден указанный модуль; Исключение HRESULT 8007007E), гуглил, читал статью на msdn https://msdn.microsoft.com/en-us/library/ms682586.aspx, но понимания особого не пришло как победить данную проблему.
Заранее спасибо,
Решение задачи: «Загрузка неуправляемой длл»
textual
Листинг программы
private void button1_Click(object sender, EventArgs e) { string login = tb_login.Text.ToUpper(); string pwd = tb_pwd.Text.ToUpper(); string db = tb_db.Text.ToUpper(); IntPtr userApi = NativeMethods.LoadLibrary("Namedll.dll"); if (userApi == IntPtr.Zero) { MessageBox.Show("1 - userApi: " + userApi.ToString()); } else { MessageBox.Show("2 - userApi: " + userApi.ToString()); } IntPtr pAddressOfFunctionToCall = NativeMethods.GetProcAddress(userApi, "getconn"); if (pAddressOfFunctionToCall == IntPtr.Zero) { MessageBox.Show("3 - pAddressOfFunctionToCall: " + pAddressOfFunctionToCall.ToString()); } else { MessageBox.Show("4 - pAddressOfFunctionToCall: " + pAddressOfFunctionToCall.ToString()); } int i = NativeMethods.connect(login, pwd, db); label1.Text = i.ToString(); string s = NativeMethods.getconn(); label2.Text = s.ToString(); } static class NativeMethods { [DllImport("Namedll.dll", EntryPoint = "connect", ExactSpelling = false, CharSet = CharSet.None)] public static extern int connect(string u, string p, string cs); [DllImport("Namedll.dll", EntryPoint = "getconn", ExactSpelling = false, CharSet = CharSet.None)] public static extern string getconn(); // вот это уже начал добавлять для отладки... [DllImport("kernel32.dll")] public static extern IntPtr LoadLibrary(string dllName); [DllImport("kernel32.dll")] public static extern IntPtr GetProcAddress(IntPtr hModule, string procedureName); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д