
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[216.73.216.96] |
![]() |
|
Сообщ.
#1
,
|
|
|
Здравствуйте.
Столкнулся с проблемой при загрузке Win32 dllлок. Библиотека не загружается, функция LoadLibrary выдает ошибку 14001. На моей машине все работает, ошибки выявились только при тестировании на других машинах. Подозреваю, что есть проблемы с С-рантаймом. Если кто сталкивался, то что может быть неправильно сконфигурировано? Спасибо. |
![]() |
Сообщ.
#2
,
|
|
Сообщ.
#3
,
|
|
|
Спасибо.
У меня стояли настройки Code Generation как /MD - MultiThreadedDll. Заменил на /MT - работает. Бывает что не замечаешь очевидного. При /MТ рантайм линкуется статически. |
Сообщ.
#4
,
|
|
|
Есть ли альтернатива такому объявлению функции при экспорте из длл, используя явное связывание?
![]() ![]() extern "C" __declspec(dllexport) void MyFunc(void); почему - то если объявить функцию без extern "C", то GetProcAddress() ее не найдет. |
Сообщ.
#5
,
|
|
|
Потому что имя у нее будет несколько изменено. Гуглить "name mangling".
|
Сообщ.
#6
,
|
|
|
Цитата Мохнатый @ Есть ли альтернатива такому объявлению функции при экспорте из длл, используя явное связывание? ![]() ![]() extern "C" __declspec(dllexport) void MyFunc(void); почему - то если объявить функцию без extern "C", то GetProcAddress() ее не найдет. см. в MSDN Module-Definition (.def) Files Добавлено Для GetProcAddress() используй MSVC...\Tools\Bin\Depends.Exe, чтобы узнать экспорт. имена |
Сообщ.
#7
,
|
|
|
То Бублик
1. При директиве __declspec(dllexport) .def файл не нужен. 2. Нету у меня такой утилиты в студии 9.0 То arj99 Это же жесть. Вот такое вот объявление ![]() ![]() static __declspec(dllexport) void MyClass::MyFunc(char*, char*, int) Превращается вот в это --> ? MyFunc@ MyClass@@SAXPAD0H@Z Есть специальная таблица, поясняющая как и что искажается компилятором. Получается, если пишешь длл сам, то вскрываешь либ файл и тянешь имена, а если работаешь с длл стороннего производителя, то сидишь и мучаешься с таблицей, переводя заголовки в имена, присваиваемые компилятором. Это жесть)). |
Сообщ.
#8
,
|
|
|
таблицу экспорта длл можно просмотреть в почти любом отладчике или прогой Hiew.exe
|
Сообщ.
#10
,
|
|
|
Спасибо всем!
Вопрос закрываю. Я думал есть способы обойти поведение компилятора. |