Page 15 of 15

Re: Менеджер DLL в MeOS

Posted: Fri Oct 10, 2008 11:16 am
by Serge
Не будет.
Надо указать точку входа DLL и текущую версию.

Code: Select all

;void __stdcall start(dword state);
start:
        mov eax, 1
        ret     4

align 16
EXPORTS:
        dd szStart,            START
        dd szVersion,          0x00010001
        dd 0             ;terminator

szStart             db 'START',0
szVersion           db 'version',0
Можно и на С. Пример для mingw

Code: Select all

typedef struct
{
  char *name;
  void *f;
}export_t;

extern export_t EXPORTS[] __asm__("EXPORTS");

char szStart[]     = "START";
char szVersion[]   = "version";

export_t EXPORTS[] =
         {
           { szStart,     start },
           { szVersion,   (void*)0x00010001 },

           {NULL,NULL},
         };

int __stdcall start(int state)
{
    return 1;
};
;

Re: Менеджер DLL в MeOS

Posted: Mon Oct 13, 2008 3:34 pm
by NEOVIS
Serge
Да, про точку входа я забыл.
А как насчёт секций?

Re: Менеджер DLL в MeOS

Posted: Mon Oct 13, 2008 3:52 pm
by mike.dld
Секция, насколько я помню, должна быть одна.

Re: Менеджер DLL в MeOS

Posted: Mon Oct 13, 2008 5:11 pm
by Serge
Не обязательно. Работают DLL даже с пустыми секциями.

Re: Менеджер DLL в MeOS

Posted: Tue Oct 14, 2008 12:12 pm
by NEOVIS
Т.е. будет работать такой код, как я понял?

Re: Менеджер DLL в MeOS

Posted: Tue Oct 14, 2008 3:41 pm
by Serge
Должен работать если исправить ошибки. Проверить легко под mtdbg. Посмотри исходники уже существующих библиотек на svn для примера.