[ Main Page ]

Making VST plugins with MinGW

MinGW + MSYS¤ÇVST Plug-in¤òºî¤ëÊýË¡¤È¥µ¥ó¥×¥ë¡£ Freeverb3@sourceforge.net¤Ç¤Ï¤³¤ì¤òÍøÍѤ·¤¿¥½¡¼¥¹¥³¡¼¥É¤òGPL¤ÇÇÛÉÛ¤·¤Æ¤¤¤Þ¤¹¡£

ɬÍפʤâ¤Î

Íî¤È¤··ê¤ä¤½¤Î¾

configure.in¤Ç¤Ï¡¢AC_LIBTOOL_WIN32_DLL¤¬AM_PROG_LIBTOOL¤ÎÁ°¤ËɬÍפǤ¹¡£

LDFLAGS(libtool)¤Ë¤Ï¡¢-no-undefined¤¬É¬ÍפǤ¹¡£

MinGW¤Ç¤Ï¡¢ __declspec(dllexport)¥Þ¥¯¥í¤Ë¤è¤ë´Ø¿ôEXPORT¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Þ¤¹¡£ -fPIC¤ÏɬÍפ¢¤ê¤Þ¤»¤ó¡£PE¤Ï¤¹¤Ù¤Æ¤¬position independent¤Ç¤¹¡£

main¤ò¥¨¥¯¥¹¥Ý¡¼¥È¤¹¤ë¤³¤È¤¬¤Ç¤­¤Ê¤¤¥³¥ó¥Ñ¥¤¥é¤¬Â¿¤¯¤¢¤ê¤Þ¤¹¡£Â¿¤¯¤Ï °Ê²¼¤Î¤è¤¦¤Ê¥¨¥é¡¼¥á¥Ã¥»¡¼¥¸¤òÅǤ¤¤Æ»ß¤Þ¤ê¤Þ¤¹¡£

FreeverbMain.cpp:31: error: `main' must return `int'
FreeverbMain.cpp:32: error: `main' must return `int'
FreeverbMain.cpp: In function `int main(...)':
FreeverbMain.cpp:32: error: declaration of C function `int main(...)' conflicts with
FreeverbMain.cpp:31: error: previous declaration `AEffect* main(VstIntPtr (*)(AEffect*, VstInt32, VstInt32, VstIntPtr, void*, float))' here
FreeverbMain.cpp: In function `int main(...)':
FreeverbMain.cpp:32: error: `VSTPluginMain' was not declared in this scope
    

Windows DLL¤Ç¤Ï¡¢ Ʊ¤¸´Ø¿ô¤òÊÌ̾¤ÇDEF¥Õ¥¡¥¤¥ë¤Ë¤è¤êEXPORT¤¹¤ëÊýË¡¤¬¤¢¤ë¤Î¤Ç¤½¤ì¤òÍøÍѤ·¤Þ¤·¤ç¤¦¡£

Freeverb4.def

LIBRARY Freeverb4.dll
EXPORTS main=VSTPluginMain
    

Makefile.am

EXTRA_DIST = Freeverb4.def
lib_LTLIBRARIES = Freeverb4.la
DLLDEF = -Wl,$(top_srcdir)/FreeverbVST/Freeverb4.def
INCLUDES = \
        -I$(top_srcdir)/VST \
        -I$(top_srcdir)/Components
Freeverb4_la_LDFLAGS = -module -avoid-version -no-undefined \
        $(DLLDEF)
Freeverb4_la_LIBADD = \
        $(top_srcdir)/Components/Components.la \
        $(top_srcdir)/VST/VST.la
Freeverb4_la_SOURCES = \
        Freeverb.cpp \
        Freeverb.hpp \
        FreeverbMain.cpp
    

objdump -x Freeverb4.dll

.edata ¤Î 0x6aa51000 ¤Ë export ¥Æ¡¼¥Ö¥ë¤¬¤¢¤ê¤Þ¤¹

Export ¥Æ¡¼¥Ö¥ë (.edata ¥»¥¯¥·¥ç¥ó¤ÎÆâÍÆ¤ò²ò¼á)

Export ¥Õ¥é¥°                   0
»þ¹ï/ÆüÉÕ¥¹¥¿¥ó¥×               45d9f339
Major/Minor                     0/0
̾Á°                            000000000001103c Freeverb4.dll
½ø¿ô¥Ù¡¼¥¹                      1
³Æ¼ï¤Î¿ôÃÍ:
        Export ¥¢¥É¥ì¥¹¥Æ¡¼¥Ö¥ë         00000002
        [̾Á°¥Ý¥¤¥ó¥¿/½ø¿ô] ¥Æ¡¼¥Ö¥ë    00000002
¥Æ¡¼¥Ö¥ë¥¢¥É¥ì¥¹
        Export ¥¢¥É¥ì¥¹¥Æ¡¼¥Ö¥ë         0000000000011028
        ̾Á°¥Ý¥¤¥ó¥¿¥Æ¡¼¥Ö¥ë            0000000000011030
        ½ø¿ô¥Æ¡¼¥Ö¥ë                    0000000000011038

Export ¥¢¥É¥ì¥¹¥Æ¡¼¥Ö¥ë -- ½ø¿ô¥Ù¡¼¥¹ 1
        [   0] +base[   1] 19e0 Export RVA
        [   1] +base[   2] 19e0 Export RVA

[½ø¿ô/̾Á°¥Ý¥¤¥ó¥¿] ¥Æ¡¼¥Ö¥ë
        [   0] VSTPluginMain
        [   1] main
    

¥µ¥ó¥×¥ë

¢Í¤½¤Î¤Û¤«MinGW Tips

Ross: You uh, you don't believe in gravity?

Phoebe: Well, it's not so much that you know, like I don't believe in it, you
know, it's just…I don't know, lately I get the feeling that I'm not so much
being pulled down as I am being pushed.

    -- David Crane & Marta Kauffman
    -- "Friends" (T.V. Show) ( http://en.wikipedia.org/wiki/Friends )

There is no IGLU Cabal! Home-made Cabals eventually superceded the power and
influence of the original IGLU Cabal, which was considered a cutting edge
development at its time.

Shlomi Fish in Hackers-IL message No. 2001
("Pentium 100 == Cray 1 (?)")

    -- Shlomi Fish
    -- Hackers-IL Message No. 2001 ( http://tech.groups.yahoo.com/group/hackers-il/message/2001 )


Powered by UNIX fortune(6)
[ Main Page ]