Название: проблема при динамическом подключении dll Отправлено: metil от Декабрь 29, 2009, 02:52 Здравствуйте!
Впервые работаю с dll и столкнулся с проблемой. В документации к TRANS2QUIK.DLL одна из функций описана как long TRANS2QUIK_IS_DLL_CONNECTED (long* pnExtendedErrorCode, LPSTR lpstrErrorMessage, DWORD dwErrorMessageSize) я объявляю 2 переменные под аргументы Код: private: затем подключаю dll Код: QLibrary lib("TRANS2QUIK"); QMessageBox рапортует о том, что библиотека подключена затем я делаю так: Код: typedef long (__stdcall *T2QIDC) (long*, LPSTR, DWORD) ; после чего TRANS2QUIK_IS_DLL_CONNECTED равно NULL, а Код: TRANS2QUIK_IS_DLL_CONNECTED(&ExtendedErrorCode, ErrorMessage, sizeof(ErrorMessage)) Где ошибка? Подскажите, пожалуйста! Название: Re: проблема при динамическом подключении dll Отправлено: Dendy от Декабрь 29, 2009, 03:03 Если вернуло NULL, то пользоваться указателем на функцию конечно же нельзя. А почему вернуло NULL? В зависимости от компилятора функция stdcall может экспортироваться с подчерком в начале и суффиксом @размер_стека_для_переменных: http://www.willus.com/mingw/yongweiwu_stdcall.html
Попробуйте: lib.resolve("_TRANS2QUIK_IS_DLL_CONNECTED"). А ещё лучше параллельно с документацией смотреть экспорты какой-нибудь смотрелкой, например вот: http://www.nirsoft.net/utils/dll_export_viewer.html Название: Re: проблема при динамическом подключении dll Отправлено: metil от Декабрь 29, 2009, 10:30 Смотрелка очень помогла.
Вызвал функцию с подчерком и суффиксом и все заработало. Большое спасибо! |