Страница: 1 |
Страница: 1 |
Вопрос: Проблемма с длл
Добавлено: 27.12.05 14:57
Автор вопроса: FreeWorlder | Web-сайт:
Проблема такая: приложение состоит из экзешника(на вб.нет 2005) и длл (с++ .нет 2005). В длл всего 1 Sub. У меня на компе, где это все разрабатывалось все иделаьно работает. Копирую на другой комп, пишет, что не может найти длл. Хотя она лежит в той же папке, что и прога.. Даже если копирую в систем32 или виндоус все равно выдаёт DllNotFoundException. Как быть?
Ответы
Всего ответов: 11
Номер ответа: 1
Автор ответа:
Mihalыch
ICQ: 373-509-101
Вопросов: 56
Ответов: 330
Профиль | | #1
Добавлено: 27.12.05 15:28
С NET не знаком, но думаю сработает. В папке с dll'кой создай файл с расширением *.bat, а в него...
@ECHO OFF
CLS
ECHO Registering MSCOMCTL1 ...
@REGSVR32.EXE MSCOMCTL1.OCX
ECHO Installation Done.
вместо MSCOMCTL1 и MSCOMCTL1.OCX вставь имя свей dll'ки и запусти его. Возможно не самый красивый способ...
Номер ответа: 2
Автор ответа:
FreeWorlder
ICQ: 1841729
Вопросов: 4
Ответов: 7
Web-сайт:
Профиль | | #2
Добавлено: 27.12.05 15:55
DLL не является COM или .Net. Я её подцепляю в VB обычным Declare Sub Lib
Номер ответа: 3
Автор ответа:
FreeWorlder
ICQ: 1841729
Вопросов: 4
Ответов: 7
Web-сайт:
Профиль | | #3
Добавлено: 27.12.05 15:56
DLL не является COM или .Net. Я её подцепляю в VB обычным Declare Sub Lib
Номер ответа: 4
Автор ответа:
Neco
ICQ: 247906854
Вопросов: 133
Ответов: 882
Web-сайт:
Профиль | | #4
Добавлено: 27.12.05 22:43
А на том компе установлена фрэйворк? Кажется, когда её нет, ошибка вылезает типа этой.
Или было написано имя библиотеки, которая не найдена?
Ещё возможно, что на том компе изменены (какием-то образом) правила поиска библиотек. Хотя это так - в порядке бреда...
Номер ответа: 5
Автор ответа:
Neco
ICQ: 247906854
Вопросов: 133
Ответов: 882
Web-сайт:
Профиль | | #5
Добавлено: 27.12.05 22:44
Приведи полностью строку экспорта функции
Номер ответа: 6
Автор ответа:
FreeWorlder
ICQ: 1841729
Вопросов: 4
Ответов: 7
Web-сайт:
Профиль | | #6
Добавлено: 28.12.05 15:26
Функции на самом деле две, обшибся. В заголовке определены так:
void createprow EXPORT (DFAPILIBLib::IIndexFieldQueryPtr *pRow);
Проблема не в том, что он функцию в длл не видит. Он длл не видит! Выдает DllNotFoundException
Номер ответа: 7
Автор ответа:
FreeWorlder
ICQ: 1841729
Вопросов: 4
Ответов: 7
Web-сайт:
Профиль | | #7
Добавлено: 28.12.05 15:28
Фреймворк установлен на всех компах
Номер ответа: 8
Автор ответа:
HOOLIGAN
Вопросов: 0
Ответов: 1066
Профиль | | #8
Добавлено: 28.12.05 15:42
Если это действительно не .com и не .net субстанция, а обычная c++ библиотека, то что за странный синтаксис:
int getdocnum EXPORT
Или это макрос?
Номер ответа: 9
Автор ответа:
HOOLIGAN
Вопросов: 0
Ответов: 1066
Профиль | | #9
Добавлено: 28.12.05 15:45
Хотя если макрос, то должно было быть
int EXPORT getdocnum
На с++ не очень похоже.
Может действительно регистрировать надо?
Номер ответа: 10
Автор ответа:
FreeWorlder
ICQ: 1841729
Вопросов: 4
Ответов: 7
Web-сайт:
Профиль | | #10
Добавлено: 28.12.05 16:01
Не знаю что там с синтаксисом, но компилится нормально, у меня работает на компе, еще на некоторых. Пробовал и без EXPORT - разницы никакой Главное что, функции прописаны в директиве EXPORTS.
Как можно зарегить такую библиотеку? БУдет ошибка типа "Не найдена точка входа для DllRegisterServer32". Регить вроде как не надо. Но в чем трабла ума не приложу...
Номер ответа: 11
Автор ответа:
HOOLIGAN
Вопросов: 0
Ответов: 1066
Профиль | | #11
Добавлено: 28.12.05 16:19
Кстати, ошибка : "файл не найден" будет происходить даже в том случае, если dll лежит по указанному адресу, и более того, винда нашла её и вызвала DllMain.
Достаточно из DllMain по сообщению DLL_PROCESS_ATTACH вернуть FALSE - и будет ошибка. Хотя код, прописанный в DllMain выполнится успешно.