use strict; use warnings; use Inline C => Config => CC => 'gcc'; use Inline C => Config => INC => '-I.'; use Inline C => Config => LD => 'ld'; use Inline C => Config => LIBS => '-L. -lfmodex'; use Inline C => << 'TEST'; #include #include #include #include "fmod.h" #include "fmod_errors.h" void ERRCHECK(FMOD_RESULT result) { if (result != FMOD_OK) { printf("FMOD error! (%d) %s\n", result, FMOD_ErrorString(result)); exit(-1); } } int main() { FMOD_SYSTEM *system; FMOD_SOUND *sound; FMOD_CHANNEL *channel = 0; FMOD_RESULT result; int key; unsigned int version; /* Create a System object and initialize. */ result = FMOD_System_Create(&system); ERRCHECK(result); result = FMOD_System_GetVersion(system, &version); ERRCHECK(result); if (version < FMOD_VERSION) { printf("Error! You are using an old version of FMOD %08x. This program requires %08x\n", version, FMOD_VERSION); return 0; } result = FMOD_System_Init(system, 1, FMOD_INIT_NORMAL, NULL); ERRCHECK(result); result = FMOD_System_CreateStream(system, "wave.mp3", FMOD_HARDWARE | FMOD_LOOP_NORMAL | FMOD_2D, 0, &sound); ERRCHECK(result); printf("====================================================================\n"); printf("PlayStream Example. Copyright (c) Firelight Technologies 2004-2008.\n"); printf("====================================================================\n"); printf("\n"); printf("Press space to pause, Esc to quit\n"); printf("\n"); /* Play the sound. */ result = FMOD_System_PlaySound(system, FMOD_CHANNEL_FREE, sound, 0, &channel); ERRCHECK(result); /* Main loop. */ do { if (kbhit()) { key = getch(); switch (key) { case ' ' : { int paused; FMOD_Channel_GetPaused(channel, &paused); FMOD_Channel_SetPaused(channel, !paused); break; } } } FMOD_System_Update(system); if (channel) { unsigned int ms; unsigned int lenms; int playing; int paused; result = FMOD_Channel_IsPlaying(channel, &playing); if ((result != FMOD_OK) && (result != FMOD_ERR_INVALID_HANDLE) && (result != FMOD_ERR_CHANNEL_STOLEN)) { ERRCHECK(result); } result = FMOD_Channel_GetPaused(channel, &paused); if ((result != FMOD_OK) && (result != FMOD_ERR_INVALID_HANDLE) && (result != FMOD_ERR_CHANNEL_STOLEN)) { ERRCHECK(result); } result = FMOD_Channel_GetPosition(channel, &ms, FMOD_TIMEUNIT_MS); if ((result != FMOD_OK) && (result != FMOD_ERR_INVALID_HANDLE) && (result != FMOD_ERR_CHANNEL_STOLEN)) { ERRCHECK(result); } result = FMOD_Sound_GetLength(sound, &lenms, FMOD_TIMEUNIT_MS); if ((result != FMOD_OK) && (result != FMOD_ERR_INVALID_HANDLE) && (result != FMOD_ERR_CHANNEL_STOLEN)) { ERRCHECK(result); } printf("Time %02d:%02d:%02d/%02d:%02d:%02d : %s\r", ms / 1000 / 60, ms / 1000 % 60, ms / 10 % 100, lenms / 1000 / 60, lenms / 1000 % 60, lenms / 10 % 100, paused ? "Paused " : playing ? "Playing" : "Stopped"); } Sleep(10); } while (key != 27); printf("\n"); /* Shut down */ result = FMOD_Sound_Release(sound); ERRCHECK(result); result = FMOD_System_Close(system); ERRCHECK(result); result = FMOD_System_Release(system); ERRCHECK(result); return 0; } TEST main(); #### use Inline C => Config => LIBS => '-L. -lfmodex'; not use Inline C => Config => LIBS => '-L. -lfmodex_vc'; #### || || Microsoft (R) Program Maintenance Utility Version 1.50 || Copyright (c) Microsoft Corp 1988-94. All rights reserved. || || C:\Perl\bin\perl.exe C:\Perl\lib\ExtUtils\xsubpp -typemap C:\Perl\lib\ExtUtils\typemap test_pl_0ca9.xs > test_pl_0ca9.xsc && C:\Perl\bin\perl.exe -MExtUtils::Command -e mv test_pl_0ca9.xsc test_pl_0ca9.c || gcc -c -IC:/test -DNDEBUG -DWIN32 -D_CONSOLE -DNO_STRICT -DHAVE_DES_FCRYPT -DUSE_SITECUSTOMIZE -DPRIVLIB_LAST_IN_INC -DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -DUSE_PERLIO -DPERL_MSVCRT_READFIX -DHASATTRIBUTE -fno-strict-aliasing -mms-bitfields -O2 -DVERSION=\"0.00\" -DXS_VERSION=\"0.00\" "-IC:\Perl\lib\CORE" test_pl_0ca9.c || Running Mkbootstrap for test_pl_0ca9 () || C:\Perl\bin\perl.exe -MExtUtils::Command -e chmod 644 test_pl_0ca9.bs || C:\Perl\bin\perl.exe -MExtUtils::Mksymlists -e "Mksymlists('NAME'=>\"test_pl_0ca9\", 'DLBASE' => 'test_pl_0ca9', 'DL_FUNCS' => { }, 'FUNCLIST' => [], 'IMPORTS' => { }, 'DL_VARS' => []);" || Set up gcc environment - 3.4.5 (mingw special) || dlltool --def test_pl_0ca9.def --output-exp dll.exp || g++ -o blib\arch\auto\test_pl_0ca9\test_pl_0ca9.dll -Wl,--base-file -Wl,dll.base -mdll -L"C:\Perl\lib\CORE" test_pl_0ca9.o -Wl,--image-base,0x2b150000 C:\Perl\lib\CORE\perl510.lib C:\MinGW\lib\libkernel32.a C:\MinGW\lib\libuser32.a C:\MinGW\lib\libgdi32.a C:\MinGW\lib\libwinspool.a C:\MinGW\lib\libcomdlg32.a C:\MinGW\lib\libadvapi32.a C:\MinGW\lib\libshell32.a C:\MinGW\lib\libole32.a C:\MinGW\lib\liboleaut32.a C:\MinGW\lib\libnetapi32.a C:\MinGW\lib\libuuid.a C:\MinGW\lib\libws2_32.a C:\MinGW\lib\libmpr.a C:\MinGW\lib\libwinmm.a C:\MinGW\lib\libversion.a C:\MinGW\lib\libodbc32.a C:\MinGW\lib\libodbccp32.a C:\MinGW\lib\libmsvcrt.a dll.exp || test_pl_0ca9.o:test_pl_0ca9.c:(.text+0x3f9): undefined reference to `FMOD_System_Create@4' || test_pl_0ca9.o:test_pl_0ca9.c:(.text+0x416): undefined reference to `FMOD_System_GetVersion@8' || test_pl_0ca9.o:test_pl_0ca9.c:(.text+0x473): undefined reference to `FMOD_System_Init@16' || test_pl_0ca9.o:test_pl_0ca9.c:(.text+0x4a8): undefined reference to `FMOD_System_CreateStream@20' || test_pl_0ca9.o:test_pl_0ca9.c:(.text+0x523): undefined reference to `FMOD_System_PlaySound@20' || test_pl_0ca9.o:test_pl_0ca9.c:(.text+0x53b): undefined reference to `FMOD_System_Update@4' || test_pl_0ca9.o:test_pl_0ca9.c:(.text+0x584): undefined reference to `FMOD_Channel_GetPaused@8' || test_pl_0ca9.o:test_pl_0ca9.c:(.text+0x59f): undefined reference to `FMOD_Channel_SetPaused@8' || test_pl_0ca9.o:test_pl_0ca9.c:(.text+0x5ad): undefined reference to `FMOD_System_Update@4' || test_pl_0ca9.o:test_pl_0ca9.c:(.text+0x5cb): undefined reference to `FMOD_Channel_IsPlaying@8' || test_pl_0ca9.o:test_pl_0ca9.c:(.text+0x60e): undefined reference to `FMOD_Channel_GetPaused@8' || test_pl_0ca9.o:test_pl_0ca9.c:(.text+0x657): undefined reference to `FMOD_Channel_GetPosition@12' || test_pl_0ca9.o:test_pl_0ca9.c:(.text+0x697): undefined reference to `FMOD_Sound_GetLength@12' || test_pl_0ca9.o:test_pl_0ca9.c:(.text+0x7e3): undefined reference to `FMOD_Sound_Release@4' || test_pl_0ca9.o:test_pl_0ca9.c:(.text+0x7f9): undefined reference to `FMOD_System_Close@4' || test_pl_0ca9.o:test_pl_0ca9.c:(.text+0x80f): undefined reference to `FMOD_System_Release@4' || collect2: ld returned 1 exit status || NMAKE : fatal error U1077: 'C:\WINDOWS\system32\cmd.exe' : return code '0x1' || Stop. || || A problem was encountered while attempting to compile and install your Inline || C code. The command that failed was: || nmake > out.make 2>&1 || || The build directory was: || C:\test\_Inline\build\test_pl_0ca9 || || To debug the problem, cd to the build directory, and inspect the output files. || || at C:\test\test.pl line 28 test.pl|167| BEGIN failed--compilation aborted