Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Single Post  Topic: Компиляция плагинов в MinGW 
Author Message
tmp



PostPosted: Sun Apr 12, 2009 11:44    Post subject: Компиляция плагинов в MinGW Reply with quote

Здравствуйте. Я пишу небольшой 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?
View user's profile Send private message


Powered by phpBB © 2001, 2005 phpBB Group