Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.61/18: Рейтинг темы: голосов - 18, средняя оценка - 4.61
146 / 146 / 32
Регистрация: 26.10.2008
Сообщений: 782

Импорт DLL

21.12.2010, 10:46. Показов 3741. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть DLL, в которой определён namespace DLL_test, а в программе нужно импортировать функции из этой DLL. Вся проблема в том, что namespace в программе совпадает с namespace в DLL и возникает конфликт (переименовывать namespace нельзя).

Как можно импортировать функции из DLL, не создавая ссылку на ней в проекте, или обращаться к DLL не только по namespace, а ещё по имени? Или ещё какие-нибудь решения.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
21.12.2010, 10:46
Ответы с готовыми решениями:

Импорт из dll
В dll есть функция, возвращающая строку в стиле С char const* __cdecl fn() импортирую её public static extern IntPtr...

импорт функций из DLL
В общем, решил я попрактиковаться в анализе программ, в ходе возникла проблема. В решетке особо не шарю, только на уровне "О! Это же...

Импорт функции из dll
Доброго времени суток. Есть dll на с++ с некоторой функцией такого вида: extern "C" __declspec(dllexport) void...

10
burning1ife
 Аватар для kenny69
1466 / 1287 / 294
Регистрация: 21.09.2008
Сообщений: 3,438
Записей в блоге: 9
21.12.2010, 12:01
названия классов тоже совпадают?
0
146 / 146 / 32
Регистрация: 26.10.2008
Сообщений: 782
21.12.2010, 13:01  [ТС]
Нет. Имена классов могут и не совпадать.
0
 Аватар для Mikant
1322 / 995 / 127
Регистрация: 08.12.2009
Сообщений: 1,299
21.12.2010, 13:09
какие конфликты возникают конкретно?

в BCL пространство имен System существует в десятке различных файлов и нечего, все работает как часы.
0
146 / 146 / 32
Регистрация: 26.10.2008
Сообщений: 782
21.12.2010, 13:30  [ТС]
Верно, если классы имеют разные имена, то конфликтов нет.
А что, если имена классов совпадают? При попытке вызова, вызывается текущий класс, а не класс из DLL.

Добавлено через 3 минуты
Получается вот такой код:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
namespace DLL_test
{
    public class Mathematics
    {
        public static double Sin(double x)
        {
            return DLL_test.Mathematics.Sin(x); // Этот метод должен вызываться из DLL
        }
 
        public static double Cos(double x)
        {
            return DLL_test.Mathematics.Cos(x); // Этот метод должен вызываться из DLL
        }
    }
}
Добавлено через 1 минуту
В проекте указана ссылка на DLL_test.dll, в которой есть такой же namespace с таким же классом и методами.
0
15 / 9 / 0
Регистрация: 17.03.2010
Сообщений: 36
21.12.2010, 17:12
http://msdn.microsoft.com/en-u... ibute.aspx

Так должно работать, я пробовал с неуправляемыми библиотеками, думаю с управляемыми тоже самое. Попробуй.
0
Почетный модератор
Эксперт .NET
 Аватар для NickoTin
8725 / 3677 / 404
Регистрация: 14.06.2010
Сообщений: 4,513
Записей в блоге: 9
21.12.2010, 17:17
wartur, не покатит. Что же ты решил импортировать из managed dll, если стандартно .net dll не могут экспортировать функции.
0
burning1ife
 Аватар для kenny69
1466 / 1287 / 294
Регистрация: 21.09.2008
Сообщений: 3,438
Записей в блоге: 9
21.12.2010, 17:42
самое простое решение

1.переименовать свой класс... и сделай автозамену названия этого класса во всем прокте... 1 мин на решение этого вопроса в проекте независимо от размера.

или

2. сделай другой namespace у своего проекта... автозаменой по всему проекту так же...

Не по теме:

PS. я свосем не понимаю, зачем делать названия namespace одинаковыми, а если и сделал, то зачем объфявлять классы с таким же именем?

0
15 / 9 / 0
Регистрация: 17.03.2010
Сообщений: 36
22.12.2010, 19:54
Жесть, запара + PHP убивает знания C# )))) Конечно же классы никак от туда.
0
 Аватар для Humanitis
176 / 168 / 27
Регистрация: 12.01.2009
Сообщений: 430
23.12.2010, 17:08
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
namespace DLL_test
{
 
 
    public class Mathematics
    {
        private static MethodInfo _sinMethod, _cosMethod;
 
        static Mathematics()
        {
            Assembly dllAssembly = Assembly.LoadFrom(Directory.GetCurrentDirectory() + "\\DLL_test.dll");
            Type classType = dllAssembly.GetType("DLL_test.Mathematics");
            _sinMethod = classType.GetMethod("Sin");
            _cosMethod = classType.GetMethod("Cos");
        }
 
        public static double Sin(double x)
        {
            return (double)_sinMethod.Invoke(null, new object[] { x });  // Этот метод должен вызываться из DLL
        }
 
        public static double Cos(double x)
        {
            return (double)_cosMethod.Invoke(null, new object[] { x }); // Этот метод должен вызываться из DLL
        }
    }
}
2
146 / 146 / 32
Регистрация: 26.10.2008
Сообщений: 782
24.12.2010, 22:06  [ТС]
Humanitis, спасибо! Сам смотрел в сторону Assembly, но использовал не тот метод для загрузки.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
24.12.2010, 22:06
Помогаю со студенческими работами здесь

Импорт метода из Dll написанной на C++
Всем привет! Вот какая проблема. Нужно вызвать метод из Dll написанный на c++. Вот как выглядит его прототип: USTEXPORT USTFUNC...

Импорт функции из DLL написанной на С++
Есть dll файл написанный на С++ (Visual Studio) Работал с этой библиотекой в Autoit (скриптовый язык). Сейчас хочу сделать вызов из...

Импорт dll(C++) в dll(C#)
Во общем нужно из c# dll'ки вызвать функцию с c++ dll'ки. Написал вот так вот - не работает( // c#(GetData_x32.dll) //...

Неуправляемая DLL библиотека. Импорт, создание класса библиотеки
По курсовой нужно воспользоваться неуправляемой dll. Сразу скажу, возможно много где ошибаюсь в связи с узкими знаниями в этом...

Как множество dll собрать в один dll или exe файл?
Сделал тестовый проектик по работе с БД (Entity Framework), скомпилировал и как глянул в папку Debug....., а там куча dll файлов. Путем...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru