Dll Qt para Delphi
-
Olá boa tarde
Estou tentando utilizar uma Dll feita em QT mas não estou me saindo muito bem, estou tendo dificuldades de importar o tipo correto no Delphi se é que esse e o problema mesmo.
O que ocorre um um erro aparentemente na Dll do QT, pois lá aparece Microsoft Visual C++ Error informando que o programa vai terminar inesperadamente, como a mensagem não é comum de forma nenhum no Delphi penso que poderia ser no QT ou algo do tipo, já que ocorre quando tento executar a função extraída da DLL Qt.
OS dados são:
#define QDLL_EXPORT Q_DECL_EXPORT
#ifndef QDLL_EXPORT_000_GLOBAL_H
#define QDLL_EXPORT_000_GLOBAL_H.H
#include <shlobj.h>
#include <iostream>extern "C"
{
QDLL_EXPORT bool compressFile(PWCHAR *cfileSource, PWCHAR *cfileDestine);
QDLL_EXPORT bool UncompressFile(PWCHAR *cfileSource, PWCHAR *cfileDestine);
}#endif // SW_COMPRESS_FILES_DLL_000_GLOBAL_H
.CPP
#include <QFile>
#include <QtCore/qglobal.h>
#include <QMessageBox>
#include "sw_compress_files_dll_000_global.h"bool compressFile(PWCHAR *cfileSource, PWCHAR *cfileDestine)
{
Q_UNUSED(cfileSource);
Q_UNUSED(cfileDestine);QMessageBox::warning(0,"A","A");
}
bool UncompressFile(PWCHAR *cfileSource, PWCHAR *cfileDestine)
{
Q_UNUSED(cfileSource);
Q_UNUSED(cfileDestine);
QMessageBox::warning(0,"B","B");
return true;
}Delphi:
type TQCompress =function(cfileSource:PWChar;cfileDestine:PWChar):BOOL stdcall;
procedure TForm1.XPButton1Click(Sender: TObject);
const dll='c:\test\sw_compress_files_dll_000.dll';
var com:TQCompress;
var dec:TQCompress;
var iqt:THandle;function GetFun(fName:String):FARPROC; var F:FARPROC; begin F:=GetProcAddress(iqt, PChar(Trim(fName))); Result:=F; end;
const filesource:PWChar='C:\temp\notacred[8497].pdf';
const filedesctine:PWChar='C:\temp\notacred[8497].com';begin
iqt:=LoadLibrary(dll);com:=GetFun('compressFile'); dec:=GetFun('UncompressFile'); com(PWChar(filesource), PWChar(filedesctine)); dec(PWChar(filesource),PWChar(filedesctine)); FreeLibrary(iqt);
end;
end.