Как я могу использовать функцию Dll в QT - PullRequest
2 голосов
/ 25 января 2010

как я могу использовать эту функцию DLL ?:

extern "C"__declspec(dllexport) 
  void   __cdecl InvertRawPic(unsigned char *In, unsigned char *Out, 
                              unsigned int rows, unsigned int cols);

в QT. Эта функция предназначена для инвертирования изображений.

1 Ответ

0 голосов
/ 25 января 2010

Если вы хотите динамически загружать вашу библиотеку во время выполнения, у вас есть 2 способа:
1) использование специфичного для платформы API (для Windows это такие функции, как LoadLibrary (...), GetProcAddress (...));
2) использование класса QLibrary, который просто делает кроссплатформенную оболочку Qt, чтобы делать такие вещи.
Оба этих метода требуют от вас указать имена функций для таких методов, как GetProceAddress () или QLibrary :: resol () ...
Qt также имеет систему плагинов, но она не подходит для созданных на стороне dll ...
Это рабочий пример из моего кода:

<code>
// it is body of "bool func()" function...
typedef DWORD (*SetSystemMemFuncPtr_t)(DWORD dwStorePages);
SetSystemMemFuncPtr_t SetSystemMemoryDivision;</p>

<p>HMODULE hLib        = 0;
LPCWSTR libName     = L"coredll.dll";
LPCWSTR procName    = L"SetSystemMemoryDivision";</p>

<p>if(!(hLib = LoadLibrary(libName)))
{
    return false;
}</p>

<p>if(!(SetSystemMemoryDivision = reinterpret_cast(GetProcAddress(hLib, procName))))
{
        return false;
}
// do some work...
FreeLibrary(hLib);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...