Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 1 |

 

  Вопрос: Проблемма с длл Добавлено: 27.12.05 14:57  

Автор вопроса:  FreeWorlder | Web-сайт: www.odin.ru | ICQ: 1841729 
Проблема такая: приложение состоит из экзешника(на вб.нет 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-сайт: www.odin.ru
 Профиль | | #2
Добавлено: 27.12.05 15:55
DLL не является COM или .Net. Я её подцепляю в VB обычным Declare Sub Lib

Ответить

Номер ответа: 3
Автор ответа:
 FreeWorlder



ICQ: 1841729 

Вопросов: 4
Ответов: 7
 Web-сайт: www.odin.ru
 Профиль | | #3
Добавлено: 27.12.05 15:56
DLL не является COM или .Net. Я её подцепляю в VB обычным Declare Sub Lib

Ответить

Номер ответа: 4
Автор ответа:
 Neco



ICQ: 247906854 

Вопросов: 133
Ответов: 882
 Web-сайт: neco.pisem.net
 Профиль | | #4
Добавлено: 27.12.05 22:43
А на том компе установлена фрэйворк? Кажется, когда её нет, ошибка вылезает типа этой.
Или было написано имя библиотеки, которая не найдена?
Ещё возможно, что на том компе изменены (какием-то образом) правила поиска библиотек. Хотя это так - в порядке бреда...

Ответить

Номер ответа: 5
Автор ответа:
 Neco



ICQ: 247906854 

Вопросов: 133
Ответов: 882
 Web-сайт: neco.pisem.net
 Профиль | | #5
Добавлено: 27.12.05 22:44
Приведи полностью строку экспорта функции

Ответить

Номер ответа: 6
Автор ответа:
 FreeWorlder



ICQ: 1841729 

Вопросов: 4
Ответов: 7
 Web-сайт: www.odin.ru
 Профиль | | #6
Добавлено: 28.12.05 15:26
Функции на самом деле две, обшибся. В заголовке определены так:
int getdocnum EXPORT(int num, int potok, DFAPILIBLib::IDataBasePtr *mDB);
void createprow EXPORT (DFAPILIBLib::IIndexFieldQueryPtr *pRow);

Проблема не в том, что он функцию в длл не видит. Он длл не видит! Выдает DllNotFoundException

Ответить

Номер ответа: 7
Автор ответа:
 FreeWorlder



ICQ: 1841729 

Вопросов: 4
Ответов: 7
 Web-сайт: www.odin.ru
 Профиль | | #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-сайт: www.odin.ru
 Профиль | | #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 выполнится успешно.

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам