Russian Qt Forum

Qt => Общие вопросы => Тема начата: Danila_Bagrofff от Июль 11, 2011, 12:45



Название: Использование функций библиотеки dbx32.dll
Отправлено: Danila_Bagrofff от Июль 11, 2011, 12:45
Нужно использовать библиотеки P-CAD.
DBX32.dll, есть также dbx32.lib и dbx32.h файлы.

В pro-файл добавляю:
Код:
LIBS += dbx32.lib

В cpp-файл, где юзаю функции либы, добавляю:
Код:
#include "dbx32.h"

В описании либы есть функция, которую использую у себя:
Код:
long
DLLX TOpenDesign (long language,
                  long version,
                  const char* pDesignName,
                  DbxContext* pContext);

При сборке проекта выдается ошибка:
Цитировать
debug/DialogPE3.o:D:\Program\LoodsmanContext/DialogPE3.cpp:261: undefined reference to `TOpenDesign(long, long, char const*, DbxContext*)@16'

Видимо, библиотека собрана не под mingw, и mingw не может правильно обратиться к функции.
Что можно сделать, чтобы все-таки использовать данную либу?...



Название: Re: Использование функций библиотеки dbx32.dll
Отправлено: kuzulis от Июль 11, 2011, 13:20
Цитировать
LIBS += -ldbx32

А вообще, спроси ка лучше у  lit-uriy. Он вроде бы что-то подобное делал (именно с P-Cad).


Название: Re: Использование функций библиотеки dbx32.dll
Отправлено: Danila_Bagrofff от Июль 11, 2011, 13:42
чет никак:
:: error: cannot find -ldbx32

Так не выходит.

Нашел интересную инфу:
http://forums.codeblocks.org/index.php?PHPSESSID=svbllkfp58dk9tgq21m56hjnl4&topic=8411.msg62081#msg62081

В особенности:
Цитировать
I've replace
Код:
#define DLLX __stdcal
l

with
Код:
#define DLLX __cdecl

in DBx32.h and now I get a beautiful
Цитировать
Process terminated with status 0 (0 minutes, 26 seconds)
0 errors, 0 warnings


Это в файле dbx32.h подменили. так проблема с @16 вроде как пропала. Но не получается заюзать функцию.

Пытаюсь теперь заюзать в кути:
Код:
DbxContext tContext;
    if(TOpenDesign(DBX_LANGUAGE, DBX_VERSION, "sch", &tContext)==DBX_OK)
    {
        emit(addLog(tr("!!!!!")));
    }
    return true;

Но выдается ошибка:

Цитировать
mingw32-make: Leaving directory `D:/Program/LoodsmanContext'
debug/DialogPE3.o:D:\Program\LoodsmanContext/DialogPE3.cpp:262: undefined reference to `TOpenDesign(long, long, char const*, DbxContext*)'
collect2: ld returned 1 exit status
mingw32-make[1]: *** [debug\LoodsmanContext.exe] Error 1
mingw32-make: *** [debug] Error 2
Процесс "D:/Qt/2010.05/mingw/bin/mingw32-make.exe" завершился с кодом %2.
Возникла ошибка при сборке проекта LoodsmanContext (цель: Настольный компьютер)
Во время выполнения сборки на этапе "Сборка"

Подскажите, где я теперь косяк?