38 / 1 / 0
Регистрация: 09.08.2012
Сообщений: 44
|
|
Как инициализировать массив в dll ?08.06.2015, 11:59. Показов 2911. Ответов 30
Метки нет Все метки)
(
Экспериментирую с dll.
Сделал графическую функцию, которая рассчитывает расстояние между точками в цикле. Хочу оптимизировать ее, чтоб не каждый раз квадратный корень вычислять, а брать результат из массива скажем 100х100. Подскажите пожалуйста как объявить статический массив в dll ке и как инициализировать ее значениями, вызвать из проги какую-нибудь функцию инициализации или только через DllMain ?
0
|
08.06.2015, 11:59 | |
Ответы с готовыми решениями:
30
Как инициализировать массив чисел в С++? Как инициализировать такой массив Как инициализировать массив переменной |
43 / 43 / 12
Регистрация: 06.10.2014
Сообщений: 135
|
|
08.06.2015, 12:27 | |
Если значения известны во время компиляции, то инициализируйте массив как обычно, типа double arr[100][100] = {...}. Если значения не известны во время компиляции, то в DllMain. Что можно делать, а что нет в DllMain смотрите здесь Dynamic-Link Library Best Practices.
Тему в C++ и WinAPI нужно было размещать.
0
|
38 / 1 / 0
Регистрация: 09.08.2012
Сообщений: 44
|
|||||||||||
08.06.2015, 12:35 [ТС] | |||||||||||
Все разобрался сам.
В h файле все делаем.
0
|
43 / 43 / 12
Регистрация: 06.10.2014
Сообщений: 135
|
||||||
08.06.2015, 12:45 | ||||||
Я вот смотрю, что значения можно посчитать зарание. Лучше сделать это (например, сохраните результаты в файл и скопируйте их). И инициализируйте массив статически, а не динамически.
1
|
38 / 1 / 0
Регистрация: 09.08.2012
Сообщений: 44
|
|
08.06.2015, 12:56 [ТС] | |
Мысль конечно здравая, но во первых там массив 300 на 300 будет, многовато текста.
Во вторых таких массивов нужно несколько, если вот только еще один отдельный файл с ними зафигачить. И программу которая это все считает и пишет текст другой программы)) хм, что то в этом есть.. ![]()
0
|
19471 / 10080 / 2456
Регистрация: 30.01.2014
Сообщений: 17,763
|
||||||||||||
08.06.2015, 12:58 | ||||||||||||
Denissimo, правильно делать так: В h-файле dll
2
|
![]() |
|
08.06.2015, 13:04 | |
можно при помощи метапрограммирования сделать, тогда массив будет заполняться во время компиляции, т.е. в рантаме не надо ничего отдельно вызывать.
1
|
38 / 1 / 0
Регистрация: 09.08.2012
Сообщений: 44
|
|||||||
08.06.2015, 13:53 [ТС] | |||||||
наверное слишком сложно.
0
|
38 / 1 / 0
Регистрация: 09.08.2012
Сообщений: 44
|
||
08.06.2015, 15:08 [ТС] | ||
можно же не просто форматированные результаты в файл записать, добавить заголовки сразу и т.д. Вариант вполне рабочий, я пока решил остановиться на варианте с инициализацией. А вам спасибо за помощь)
0
|
38 / 1 / 0
Регистрация: 09.08.2012
Сообщений: 44
|
|
10.06.2015, 08:58 [ТС] | |
Назрел новый вопрос. Может ктонибудь в курсе.
В DLL ке есть класс. Чтоб он был доступен из основной программы что надо сделать? extern "C" - перед конструктором? перед каждой функцией? целиком его вынести в хедер файл?
0
|
19471 / 10080 / 2456
Регистрация: 30.01.2014
Сообщений: 17,763
|
|
10.06.2015, 09:08 | |
1
|
19471 / 10080 / 2456
Регистрация: 30.01.2014
Сообщений: 17,763
|
|
10.06.2015, 10:11 | |
0
|
19471 / 10080 / 2456
Регистрация: 30.01.2014
Сообщений: 17,763
|
||
10.06.2015, 10:34 | ||
extern "C" - это не какая-то магия, это явное задание декорации имени для линкера в стиле С. Очевидно, что для классов это вообще не применимо, т.к. в С нет классов. Если хочется сохранить совместимость, то от явного использования классов придется отказаться.
0
|
38 / 1 / 0
Регистрация: 09.08.2012
Сообщений: 44
|
|
10.06.2015, 10:51 [ТС] | |
Вот жеж блин.
Теперь понятно почему OpenCV содержит dll ки под разные компиляторы. Это значит если я хочу чтоб моей библиотекой могли пользоваться люди на разных win32|64 и разных компиляторах- - надо под каждый вариант отдельно компилировать?
0
|
19471 / 10080 / 2456
Регистрация: 30.01.2014
Сообщений: 17,763
|
|||||||||||||
10.06.2015, 11:12 | |||||||||||||
Можно сделать сишный интерфейс к библиотеке. А классы - это будут минимальные обертки над ним. Примерно так:
Теперь к dll мы делаем еще один заголовочник, у которого реализация будет чисто в нем и заключаться будет только в пробрасывании сишных вызовов обратно в С++ код.
Добавлено через 43 секунды Писал прямо в окошке сообщения, так что могут быть опечатки. В любом случае - это псевдокод. Добавлено через 1 минуту
1
|
10.06.2015, 11:12 | |
Помогаю со студенческими работами здесь
20
Как инициализировать массив в классе Как инициализировать массив строк? Можно ли как-то инициализировать массив?
Как инициализировать массив в структуре? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Опции темы | |
|
Новые блоги и статьи
![]() |
||||
Как украсить новогоднюю елку с Q# и Qiskit
EggHead 24.06.2025
Что может быть необычнее, чем применить законы квантовой механики для украшения новогодней елки? Пока другие развешивают обычные гирлянды, я решил объединить свою страсть к квантовым вычислениям с. . .
|
Системы нулевого доверия на C#
UnmanagedCoder 24.06.2025
Традиционная архитектура безопасности работает по принципу средневекового замка: создаём высокие стены вокруг корпоративной сети, укрепляем ворота межсетевыми экранами и системами обнаружения. . .
|
Снова не мой путь. Циклическое среднее, я обеими руками за проверку условия, в ракурсе данной задачи - циклическое среднее в топку.
Hrethgir 24.06.2025
Привет. Такой вопрос - нужно выводить среднее математическое между двумя направлениями, интервал значений которых может лежать в диапазоне одного оборота по кругу. Проблема заключается в том, что. . .
|
Деплой Flask приложения
py-thonny 23.06.2025
За годы работы с Flask я натыкался на одни и те же грабли достаточно часто, чтобы наконец научится их обходить. И сегодня хочу поделится опытом, который сбережет вам немало нервных клеток. Начнем с. . .
|
WebAssembly и контейнеры в .NET Aspire для оркестрации распределенных архитектур
ArchitectMsa 23.06.2025
Я наблюдаю, как WebAssembly (или просто WASM) постепенно выходит за рамки своего первоначального предназначения — исполнения кода на стороне браузера. Теперь эта технология проникает в серверную. . .
|
Непрерывная интеграция для пакета Python
Mr. Docker 22.06.2025
Было 4 часа утра пятницы, когда я выпустил новую версию нашей внутренней библиотеки для обработки данных. Релиз 0. 5. 2 содержал небольшой фикс для обработки дат в ISO формате, что может пойти не так?. . .
|
Продвинутый ETL на C# из OLTP БД в хранилище
stackOverflow 22.06.2025
Работая в сфере корпоративной аналитики, я постоянно сталкиваюсь с одним и тем же - нужны чистые, структурированные и, главное, свежие данные. Без них современные аналитические системы, машинное. . .
|
Мастер-класс по микросервисам на Node.js
Reangularity 21.06.2025
Node. js стал одной из самых популярных платформ для микросервисной архитектуры не случайно. Его неблокирующая однопоточная модель и событийно-ориентированный подход делают его идеальным для. . .
|
Управление Arduino из WPF приложения
Wired 21.06.2025
Зачем вообще связывать Arduino с WPF-приложением? Казалось бы, у Arduino есть собственная среда разработки, своя экосистема, свои способы управления. Однако при создании серьезных проектов. . .
|
Звёздная пыль
kumehtar 20.06.2025
Я просто это себе представляю: как создавался этот мир. Как энергия слипалась в маленькие частички. Как они собирались в первые звёзды, как во вселенной впервые появился Свет. Как эти звёзды. . .
|