Загрузка неуправляемой длл - 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);
    }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 3.833 из 5