Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Не находит символ библиотеки (GetProcAddress)

14K
27 февраля 2008 года
andrey_hello2007
50 / / 30.05.2007
Добрый вечер.
Проблема заключается в следующем.
Для скомпилированной библиотеки при попытке запустить её функцию (GetProcAddress) выдает ошибку 3 (ERROR_PATH_NOT_FOUND). Библиотека открывается (LoadLibrary).
Qt3.3.3, Microsoft VS 2003.

Вот код библиотеки:
Код:
//#ifdef __cplusplus
extern "C" {
//#endif

#ifdef WIN32
  __declspec(dllexport)
#endif
int mail_for_docflow_new(char *FullHtmFileName, ADDRLIST *PreAddrList)
{
  #ifdef _test_pr
  cout << "mail_for_docflow_new()" << endl;
  #endif
  return 0;
}
//#ifdef __cplusplus
}
//#endif


Вот запускающий код:
Код:
#ifdef WIN32
    HINSTANCE dll = LoadLibrary(L"mail_forDocflow.dll");
  #else
    void *dll = dlopen("../lib/libmail_forDocflow.so", RTLD_LAZY);
  #endif

  int (*p)(char *FullHtmFileName, ADDRLIST *PreAddrList);

    if  (dll != NULL)
      {
      fprintf(stderr, "IDDB=%d\n", IDDB);

      #ifdef WIN32
        p = (int (*)(char *FullHtmFileName, ADDRLIST *PreAddrList))GetProcAddress(dll, "mail_for_docflow_new");
      #else
        p = (int (*)(char *FullHtmFileName, ADDRLIST *PreAddrList))dlsym(dll, "mail_for_docflow_new  ");
      #endif

    #ifdef WIN32
     fprintf(stderr,"GetLastError()= %d\n", GetLastError());
      #else
      fprintf(stderr,"dlerror()= %s\n", dlerror());
      #endif
     }
535
28 февраля 2008 года
Нездешний
537 / / 17.01.2008
попробуйте перед именем функции поставить знак подчеркивания:
 
Код:
GetProcAddress(dll, "_mail_for_docflow_new");


подробнее смотрите статью о конвенциях вызова
http://www.unixwiz.net/techtips/win32-callconv.html
14K
28 февраля 2008 года
andrey_hello2007
50 / / 30.05.2007
Цитата: Нездешний
попробуйте перед именем функции поставить знак подчеркивания:
 
Код:
GetProcAddress(dll, "_mail_for_docflow_new");


подробнее смотрите статью о конвенциях вызова



Спасибо за помощь, но ха - ха - ха (смеюсь над собой и этой глупой ошибкой).

Указатель на библиотеку получил, на функцию получил, а вызывать функцию, как говорится, будет дядя.:)

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог