Форум программистов, компьютерный форум, киберфорум
C++: COM, OLE, ActiveX
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
0 / 0 / 0
Регистрация: 30.05.2017
Сообщений: 4
1

Регистрация DLL не работает в win64

30.05.2017, 11:19. Показов 1341. Ответов 6

Задача следующая. Написал библиотеку, реализующую простой OLE интерфейс.
Сделал через ATL.
Среда Visual Studio 2015 pro.
Операционка Windows 7 32 бита.

Проблема в следующем - не могу зарегистрировать библиотеку ни в какой другой 64х битной системе.
Пробовал в разных. Win7, 8, 10.
regsvr32 говорит, что библиотека не найдена.
Простые решения типа запустить из-под администратора, указать путь в кавычках, положить в system32|syswow64 не предлагать. По моему все уже перепробовал. Тут что-то хитрее.

Отладить на целевой машине не могу. На моей машине, все, естественно, работает корректно. Регистрация/удаление и собственно сам функционал библиотеки.
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.05.2017, 11:19
Ответы с готовыми решениями:

Как перекомпилить Win32 dll -> Win64
Привет форумчане. Подскжите как перестроить MS2005 стоящую на ХР что бы можно было перекомпилить...

GlfwSwapBuffers работает неадекватно медленно. (win64, glew, glfw3)
glfwSwapBuffers работает 15ms, что явно какой-то бред. Весть рендер занимает 5ms, а смена буферов...

Где взять bass.dll bass.lib for win64
Приветствую. Тут много тем было на эти вопросы , но ответа не нашел. Где можно и вообще есть ли...

У кого-нибудь еще работает Canon i320 под Win64?
У кого-нибудь работает Canon i320 под Win64? Нигде не могу найти драйвера. Может, кто поделится,...

6
Ушел с форума
Эксперт С++
16434 / 7398 / 1186
Регистрация: 02.05.2013
Сообщений: 11,617
Записей в блоге: 1
30.05.2017, 11:47 2
А может быть, у твоей dll зависимость от других dll, которых нет на целевых системах?
В любом случае, все это - гадание на кофейной гуще. Без самой dll или кода регистрации
вряд ли можно что-то сказать наверняка. И да, запускать надо от имени администратора и
путь указывать в кавычках (если он содержит пробелы)
0
0 / 0 / 0
Регистрация: 30.05.2017
Сообщений: 4
30.05.2017, 11:56  [ТС] 3
На других машинах пока не дошли руки проверить зависимости. С другой стороны там нет ничего сверхестественного.
Самое страшное там это CRYPT32.
Код регистрации стандартный от ATL без изменений.

C++
1
2
3
4
5
6
7
8
9
10
11
STDAPI DllRegisterServer(void)
{
    // регистрирует объект, библиотеку типов и все интерфейсы в библиотеке типов
    HRESULT hr = _AtlModule.DllRegisterServer();
    #ifdef _MERGE_PROXYSTUB
    if (FAILED(hr))
        return hr;
    hr = PrxDllRegisterServer();
#endif
        return hr;
}
А что, при ошибке зависимости regsvr32 будет выдавать такую же ошибку, как при отсутствии файла?
0
Ушел с форума
Эксперт С++
16434 / 7398 / 1186
Регистрация: 02.05.2013
Сообщений: 11,617
Записей в блоге: 1
30.05.2017, 12:12 4
Цитата Сообщение от Cyrick Посмотреть сообщение
На других машинах пока не дошли руки проверить зависимости. С другой стороны там нет ничего сверхестественного.
Ну как вариант - vcruntime140.dll. По дефолту все проекты C/C++ в VS2015
ставят в зависимости эту dll. Но она не на всех компьютерах есть...

Цитата Сообщение от Cyrick Посмотреть сообщение
А что, при ошибке зависимости regsvr32 будет выдавать такую же ошибку, как при отсутствии файла?
Не знаю, если честно...
0
0 / 0 / 0
Регистрация: 30.05.2017
Сообщений: 4
30.05.2017, 14:25  [ТС] 5
А есть какая-то возможность избавится от этой гадости?
Не сказать, что я силен в сях, просто необходимость подтолкнула, а нюансов не знаю.

Добавлено через 1 час 38 минут
Спасибо, нашел. Да, по зависимостям вылезла эта новая "оптимизированная" vcruntime140.dll.
А все из-за того, что студия 2015 только у меня...
0
Ушел с форума
Эксперт С++
16434 / 7398 / 1186
Регистрация: 02.05.2013
Сообщений: 11,617
Записей в блоге: 1
30.05.2017, 14:39 6
При создании проекта ATL надо указывать в мастере "Use ATL as static library".
Тогда зависимостей от vcruntime dll не будет.
0
0 / 0 / 0
Регистрация: 30.05.2017
Сообщений: 4
30.05.2017, 14:54  [ТС] 7
У меня такого нет в мастере. Ну или совсем не знаю, куда смотреть.
Это можно как-то опциями разрулить?

Добавлено через 6 минут
Нашел. Библиотеку MFC Нужно статически собирать. Указывается отдельно в настройках проекта.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.05.2017, 14:54

Регистрация Dll
Всем привет. Расскажу по порядку - может добрый человек поможет... Есть программа А. На нее...

Регистрация dll
Здравствуйте. Есть такая библиотека NiApi.dll (http://www.netinvestor.ru/niapi.aspx). Так вот, в...

Регистрация DLL
Такая проблема: Есть парк компов в разных городах, не объединенных в ЛВС. На разных компах может...

Регистрация dll
Доброго времени суток. Хочу зарегистрировать dll командой: ...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru