tmp
|
Posted: Sun Apr 12, 2009 11:44 Post subject: Компиляция плагинов в MinGW |
|
|
Здравствуйте. Я пишу небольшой FS-плагин для TC. Компилирую в MinGW. Проблема в том, что после выхода из FsFindClose, TC выдает окно "Access violation at address 005e4416. Read of address xxxx", причем xxxx зависит от значения HANDLE, возвращенного FsFindFirst.
Код, из которого я убрал практически всё, тоже выдает ошибку:
plugin.h
Code: |
#include <windows.h>
#ifdef BUILD_DLL
/* DLL export */
#define EXPORT __declspec(dllexport)
#else
/* EXE import */
#define EXPORT __declspec(dllimport)
#endif
typedef struct {
DWORD SizeLow,SizeHigh;
FILETIME LastWriteTime;
int Attr;
} RemoteInfoStruct;
typedef struct {
int size;
DWORD PluginInterfaceVersionLow;
DWORD PluginInterfaceVersionHi;
char DefaultIniName[MAX_PATH];
} FsDefaultParamStruct;
// callback functions
typedef int *tProgressProc(int PluginNr,char* SourceName,
char* TargetName,int PercentDone);
typedef void *tLogProc(int PluginNr,int MsgType,char* LogString);
typedef BOOL *tRequestProc(int PluginNr,int RequestType,char* CustomTitle,
char* CustomText,char* ReturnedText,int maxlen);
// Function prototypes
extern "C"
{
int FsInit(int PluginNr,tProgressProc pProgressProc,
tLogProc pLogProc,tRequestProc pRequestProc);
HANDLE FsFindFirst(char* Path,WIN32_FIND_DATA *FindData);
BOOL FsFindNext(HANDLE Hdl,WIN32_FIND_DATA *FindData);
int FsFindClose(HANDLE Hdl);
}
|
plugin.c
Code: |
#include <plugin.h>
EXPORT int FsInit(int PluginNr, tProgressProc pProgressProc,
tLogProc pLogProc, tRequestProc pRequestProc)
{
return 0;
}
EXPORT HANDLE FsFindFirst(char* Path, WIN32_FIND_DATA *FindData)
{
return (HANDLE)0; //Здесь может быть указатель или любое другое число
}
EXPORT BOOL FsFindNext(HANDLE Hdl, WIN32_FIND_DATA *FindData)
{
return 0;
}
EXPORT int FsFindClose(HANDLE Hdl)
{
return 0;
}
|
При компиляции в MSVC никаких проблем нет. Как откомпилировать плагин в MinGW? |
|